Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Git Source Code Mirror - This is a publish-only repository and all pull requests are ignored. Please follow Documentation/SubmittingPatches procedure for any of your improvements.

tag: v1.9.0

Git 1.9.0

Signed-off-by: Junio C Hamano <>
latest commit 5f95c9f850
Junio C Hamano gitster authored
Failed to load latest commit information.
Documentation Git 1.9.0
block-sha1 block-sha1/sha1.c: have SP around arithmetic operators
builtin Merge branch 'tb/repack-fix-renames' (early part)
compat Merge branch 'ef/mingw-write'
contrib Merge branch 'jk/complete-merge-base'
git-gui Merge tag 'gitgui-0.19.0' of
gitk-git Merge git://
gitweb gitweb: Denote non-heads, non-remotes branches
mergetools mergetools/diffmerge: support DiffMerge as a git mergetool
perl git-svn: memoize _rev_list and rebuild
po l10n: de.po: correct message when hiding commits by craft
ppc fix openssl headers conflicting with custom SHA1 implementations
t Merge branch 'aj/ada-diff-word-pattern'
templates sample pre-commit hook: use --bool when retrieving config var
vcs-svn strbuf: introduce starts_with() and ends_with()
xdiff C: have space around && and || operators
.gitattributes .gitattributes: detect 8-space indent in shell scripts
.gitignore Merge branch 'jk/remove-deprecated'
.mailmap .mailmap: switch to Thomas Rast's personal address
COPYING Update COPYING with GPLv2 with new FSF address
INSTALL Typo fix: replacing it's -> its
LGPL-2.1 provide a copy of the LGPLv2.1
Makefile Merge branch 'jk/revision-o-is-in-libgit-a'
README Merge branch 'ta/doc-no-small-caps'
RelNotes Git 1.9.0
abspath.c Merge branch 'ap/path-max'
aclocal.m4 configure: use AC_LANG_PROGRAM consistently
advice.c Rename advice.object_name_warning to objectNameWarning
advice.h Merge branch 'jk/gcc-function-attributes'
alias.c replace {pre,suf}fixcmp() with {starts,ends}_with()
alloc.c alloc.c: have SP around arithmetic operators
archive-tar.c archive-tar: use parse_config_key when parsing config
archive-zip.c Merge branch 'sb/archive-zip-double-assignment-fix' into maint
archive.c archive.c: have SP around arithmetic operators
archive.h archive: convert to use parse_pathspec
argv-array.c Merge branch 'fa/remote-svn'
argv-array.h Add the LAST_ARG_MUST_BE_NULL macro
attr.c replace {pre,suf}fixcmp() with {starts,ends}_with()
attr.h correct a few doubled-word nits in comments and documentation
base85.c base85.c: have SP around arithmetic operators
bisect.c replace {pre,suf}fixcmp() with {starts,ends}_with()
bisect.h Move print_commit_list to libgit.a
blob.c Replace parse_blob() with an explanatory comment
blob.h Replace parse_blob() with an explanatory comment
branch.c replace {pre,suf}fixcmp() with {starts,ends}_with()
branch.h checkout: suppress tracking message with "-q"
builtin.h builtin/help.c: speed up is_git_command() by checking for builtin com…
bulk-checkin.c stream_to_pack: xread does not guarantee to read all requested bytes
bulk-checkin.h bulk-checkin: replace fast-import based implementation
bundle.c bundle: use argv-array
bundle.h Merge branch 'jc/unseekable-bundle'
cache-tree.c Convert "struct cache_entry *" to "const ..." wherever possible
cache-tree.h Convert "struct cache_entry *" to "const ..." wherever possible
cache.h Merge branch 'mh/safe-create-leading-directories' cherry is built-in, do not ship
check-racy.c ce_match_stat, run_diff_files: use symbolic constants for readability
check_bindir Move all dashed-form commands to libexecdir
color.c make color.ui default to 'auto'
color.h want_color: automatically fallback to color.ui
column.c column: support piping stdout to external git-column process
column.h column: support piping stdout to external git-column process
combine-diff.c Merge branch 'jl/submodule-mv'
command-list.txt peek-remote: remove deprecated alias of ls-remote
commit-slab.h commit-slab: sizeof() the right type in xrealloc
commit.c Merge branch 'vm/octopus-merge-bases-simplify'
commit.h Merge branch 'nd/shallow-clone'
config.c Merge branch 'cc/starts-n-ends-with' Merge branch 'jc/remove-export-from-config-mak-in'
config.mak.uname Add MirBSD support to the build system. configure: fix option help message for --disable-pthreads
connect.c Merge branch 'nd/shallow-clone'
connect.h connect.c: refactor url parsing
connected.c Merge branch 'nd/shallow-clone'
connected.h connected.c: add new variant that runs with --shallow-file
convert.c replace {pre,suf}fixcmp() with {starts,ends}_with()
convert.h typofix: in-code comments
copy.c preserve mtime of local clone
credential-cache--daemon.c credentials: add "cache" helper
credential-cache.c credential-cache: ignore "connection refused" errors
credential-store.c sparse: Fix mingw_main() argument number/type errors
credential.c credential: convert "url" attribute into its parsed subparts
credential.h git credential fill: output the whole 'struct credential'
csum-file.c Merge branch 'jk/sha1write-void'
csum-file.h Merge branch 'jk/sha1write-void'
ctype.c ctype: support iscntrl, ispunct, isxdigit and isprint
daemon.c Merge branch 'nd/daemon-informative-errors-typofix'
date.c Merge branch 'jk/date-c-double-semicolon'
decorate.c decorate.c: compact table when growing
decorate.h decorate: allow const objects to be decorated
delta.h Fix big left-shifts of unsigned char
diff-delta.c create_delta_index: simplify condition always evaluating to true
diff-lib.c Merge branch 'jl/submodule-mv'
diff-no-index.c diff: move no-index detection to builtin/diff.c
diff.c Merge branch 'jk/diff-filespec-cleanup'
diff.h Merge branch 'tg/diff-no-index-refactor'
diffcore-break.c diffcore-break: don't divide by zero
diffcore-delta.c Fix diff -B/--dirstat miscounting of newly added contents
diffcore-order.c Merge branch 'sb/diff-orderfile-config'
diffcore-pickaxe.c Merge branch 'rs/pickaxe-simplify'
diffcore-rename.c Preallocate hash tables when the number of inserts are known in advance
diffcore.h diff_filespec: use only 2 bits for is_binary flag
dir.c Merge branch 'mh/safe-create-leading-directories'
dir.h Merge branch 'jc/ls-files-killed-optim'
editor.c editor: use canonicalized absolute path
entry.c checkout_entry(): clarify the use of topath[] parameter
environment.c Merge branch 'nd/shallow-clone'
exec_cmd.c run-command: treat inaccessible directories as ENOENT
exec_cmd.h Add the LAST_ARG_MUST_BE_NULL macro
fast-import.c replace {pre,suf}fixcmp() with {starts,ends}_with()
fetch-pack.c Merge branch 'jk/allow-fetch-onelevel-refname'
fetch-pack.h Merge branch 'nd/shallow-clone'
fmt-merge-msg.h fmt-merge-msg: use branch.$name.description
fsck.c fsck: warn about ".git" in trees
fsck.h Check the format of more printf-type functions i18n: help: mark strings for translation
gettext.c gettext.c: detect the vsnprintf bug at runtime
gettext.h Merge branch 'nd/fetch-status-alignment'
git-add--interactive.perl add-interactive: handle unborn branch in patch mode Merge branch 'jk/replace-perl-in-built-scripts'
git-archimport.perl git-archimport: use a lowercase "usage:" string typofixes: fix misspelt comments
git-compat-util.h Merge branch 'bs/mirbsd'
git-cvsexportcommit.perl git-cvsexportcommit: use a lowercase "usage:" string
git-cvsimport.perl git-cvsimport: use a lowercase "usage:" string
git-cvsserver.perl Merge branch 'ak/cvsserver-stabilize-use-of-hash-keys' difftool: display the number of files in the diff queue in the prompt
git-difftool.perl difftool --dir-diff: allow changing any clean working tree file Merge branch 'lc/filter-branch-too-many-refs' use @@PERL@@ in built scripts merge-octopus: Work around environment issue on Windows Merge branch 'kb/p4merge' Convert to use quiet option when available remove #!interpreter line from shell libraries Merge branch 'al/mergetool-printf-fix' git p4: fix an error message when "p4 where" fails remove #!interpreter line from shell libraries Merge branch 'jk/pull-rebase-using-fork-point' Correct common spelling mistakes in comments and tests remove #!interpreter line from shell libraries remove #!interpreter line from shell libraries remove #!interpreter line from shell libraries rebase: fix fork-point with zero arguments
git-relink.perl git-relink: use a lowercase "usage:" string transport-helper: add no-private-update capability Merge branch 'jk/replace-perl-in-built-scripts'
git-send-email.perl Merge branch 'rk/send-email-ssl-cert' into maint remove #!interpreter line from shell libraries Merge branch 'jn/pager-lv-default-env' stash: handle specifying stashes with $IFS Merge branch 'fp/submodule-checkout-mode'
git-svn.perl git-svn: Warn about changing default for --prefix in Git v2.0 web--browse: Add support for xdg-open
git.c Merge branch 'nd/shallow-clone'
git.rc Makefile: Fix compilation of Windows resource file spec: add missing build dependency
gpg-interface.c Merge branch 'mg/gpg-interface-using-status' into maint
gpg-interface.h merge/pull Check for untrusted good GPG signatures
graph.c graph: fix coloring around octopus merges
graph.h Revert "graph.c: mark private file-scope symbols as static"
grep.c grep: allow to use textconv filters
grep.h grep: allow to use textconv filters
hash.c for_each_hash: allow passing a 'void *data' pointer to callback
hash.h Preallocate hash tables when the number of inserts are known in advance
help.c replace {pre,suf}fixcmp() with {starts,ends}_with()
help.h help: add help_unknown_ref()
hex.c get_sha1_hex(): do not read past a NUL character
http-backend.c replace {pre,suf}fixcmp() with {starts,ends}_with()
http-fetch.c Merge branch 'ab/enable-i18n'
http-push.c replace {pre,suf}fixcmp() with {starts,ends}_with()
http-walker.c Rename static function fetch_pack() to http_fetch_pack()
http.c Merge branch 'cc/starts-n-ends-with'
http.h Merge branch 'bc/http-100-continue'
ident.c Merge branch 'jk/split-broken-ident' into maint
imap-send.c replace {pre,suf}fixcmp() with {starts,ends}_with()
kwset.c typofix: in-code comments
kwset.h Adapt the kwset code to Git
levenshtein.c Fix typos / spelling in comments
levenshtein.h Typofixes outside documentation area
line-log.c Merge branch 'nd/magic-pathspec'
line-log.h range-set: publish API for re-use by git-blame -L
line-range.c line-range: reject -L line numbers less than 1
line-range.h line-range: teach -L/RE/ to search relative to anchor point
list-objects.c Merge branch 'jk/mark-edges-uninteresting'
list-objects.h list-objects: reduce one argument in mark_edges_uninteresting
ll-merge.c convert some config callbacks to parse_config_key
ll-merge.h merge-recursive --patience
lockfile.c lockfile: fix buffer overflow in path handling
log-tree.c Merge branch 'bc/log-decoration'
log-tree.h pretty: share code between format_decoration and show_decorations
mailmap.c Merge branch 'jc/strcasecmp-pure-inline'
mailmap.h mailmap: simplify map_user() interface
match-trees.c match-trees: factor out fill_tree_desc_strict
merge-blobs.c Which merge_file() function do you mean?
merge-blobs.h Which merge_file() function do you mean?
merge-recursive.c Merge branch 'mh/safe-create-leading-directories'
merge-recursive.h Move try_merge_command and checkout_fast_forward to libgit.a
merge.c Move try_merge_command and checkout_fast_forward to libgit.a
mergesort.c mergesort: rename it to llist_mergesort()
mergesort.h mergesort: rename it to llist_mergesort()
name-hash.c name-hash: stop storing trailing '/' on paths in index_state.dir_hash
notes-cache.c Merge branch 'jc/show-sig'
notes-cache.h introduce notes-cache interface
notes-merge.c remove diff_tree_{setup,release}_paths
notes-merge.h Move create_notes_commit() from notes-merge.c into notes-utils.c
notes-utils.c Merge branch 'cc/starts-n-ends-with'
notes-utils.h typofix: commit is spelled with two ems
notes.c replace {pre,suf}fixcmp() with {starts,ends}_with()
notes.h many small typofixes
object.c Merge branch 'mg/more-textconv'
object.h Merge branch 'mg/more-textconv'
pack-check.c fsck: print progress
pack-revindex.c pack-revindex: radix-sort the revindex
pack-revindex.h discard revindex data when pack list changes
pack-write.c Merge branch 'jk/sha1write-void'
pack.h pack-objects: name pack files after trailer hash
pager.c Merge branch 'jn/pager-lv-default-env'
parse-options-cb.c prune: introduce OPT_EXPIRY_DATE() and use it
parse-options.c replace {pre,suf}fixcmp() with {starts,ends}_with()
parse-options.h parse-options: remove OPT_BOOLEAN
patch-delta.c compat: helper for detecting unsigned overflow
patch-ids.c diff_setup_done(): return void
patch-ids.h Refactor patch-id filtering out of git-cherry and git-format-patch.
path.c Merge branch 'jx/relative-path-regression-fix'
pathspec.c Merge branch 'nd/negative-pathspec'
pathspec.h Support pathspec magic :(exclude) and its short form :!
pkt-line.c replace {pre,suf}fixcmp() with {starts,ends}_with()
pkt-line.h pkt-line: share buffer/descriptor reading implementation
preload-index.c convert read_cache_preload() to take struct pathspec
pretty.c replace {pre,suf}fixcmp() with {starts,ends}_with()
prio-queue.c sort-in-topological-order: use prio-queue
prio-queue.h sort-in-topological-order: use prio-queue
progress.c strbuf: create strbuf_humanise_bytes() to show byte sizes
progress.h nicer display of thin pack completion
prompt.c Revert "prompt: clean up strbuf usage"
prompt.h prompt: use git_terminal_prompt
quote.c quote: remove sq_quote_print()
quote.h quote: remove sq_quote_print()
reachable.c clear parsed flag when we free tree buffers
reachable.h prune: show progress while marking reachable objects
read-cache.c Merge branch 'es/name-hash-no-trailing-slash-in-dirs'
reflog-walk.c Merge branch 'jk/maint-reflog-walk-count-vs-time' into maint
reflog-walk.h Merge branch 'jk/maint-reflog-walk-count-vs-time' into maint
refs.c Merge branch 'mh/safe-create-leading-directories'
refs.h Merge branch 'sb/refs-code-cleanup'
remote-curl.c Merge branch 'nd/shallow-clone'
remote-testsvn.c replace {pre,suf}fixcmp() with {starts,ends}_with()
remote.c Merge branch 'mh/retire-ref-fetch-rules'
remote.h Merge branch 'nd/shallow-clone'
replace_object.c replace_object: don't check read_replace_refs twice
rerere.c Merge branch 'jl/submodule-mv'
rerere.h rerere: convert to use parse_pathspec
resolve-undo.c Merge branch 'jl/submodule-mv'
resolve-undo.h convert unmerge_cache to take struct pathspec
revision.c Merge branch 'jc/revision-range-unpeel'
revision.h Merge branch 'jc/ref-excludes'
run-command.c run-command: trivial style fixes
run-command.h Add the LAST_ARG_MUST_BE_NULL macro
send-pack.c Merge branch 'nd/shallow-clone'
send-pack.h remote.h: replace struct extra_have_objects with struct sha1_array
sequencer.c replace {pre,suf}fixcmp() with {starts,ends}_with()
sequencer.h sequencer.c: teach append_signoff how to detect duplicate s-o-b
server-info.c update-server-info: Shorten read_pack_info_file()
setup.c replace {pre,suf}fixcmp() with {starts,ends}_with()
sh-i18n--envsubst.c Merge branch 'js/i18n-windows'
sha1-array.c sha1-array.c: mark a private file-scope symbol as static
sha1-array.h sha1-array.c: mark a private file-scope symbol as static
sha1-lookup.c sha1-lookup: handle duplicate keys with GIT_USE_LOOKUP
sha1-lookup.h sha1-lookup: add new "sha1_pos" function to efficiently lookup sha1
sha1_file.c Merge branch 'ss/safe-create-leading-dir-with-slash'
sha1_name.c Merge branch 'jk/interpret-branch-name-fix'
shallow.c Merge branch 'nd/shallow-clone'
shell.c replace {pre,suf}fixcmp() with {starts,ends}_with()
shortlog.h pretty: Respect --abbrev option
show-index.c i18n: add infrastructure for translating Git with gettext
sideband.c pkt-line: share buffer/descriptor reading implementation
sideband.h pkt-line: move LARGE_PACKET_MAX definition from sideband
sigchain.c refactor signal handling for cleanup functions
sigchain.h refactor signal handling for cleanup functions
strbuf.c strbuf: introduce starts_with() and ends_with()
strbuf.h strbuf: create strbuf_humanise_bytes() to show byte sizes
streaming.c Merge branch 'ef/mingw-write'
streaming.h streaming: void pointer instead of char pointer
string-list.c Merge branch 'ap/log-mailmap'
string-list.h Merge branch 'ap/log-mailmap'
submodule.c replace {pre,suf}fixcmp() with {starts,ends}_with()
submodule.h rm: delete .gitmodules entry of submodules removed from the work tree
symlinks.c symlinks.c: mark private file-scope symbols as static
tag.c replace {pre,suf}fixcmp() with {starts,ends}_with()
tag.h upload-pack: avoid parsing tag destinations
tar.h tar-tree: Introduce write_entry()
test-chmtime.c Merge branch 'js/test-ln-s-add'
test-ctype.c test-ctype: add test for is_pathspec_magic
test-date.c i18n: mark relative dates for translation
test-delta.c tests: use a lowercase "usage:" string
test-dump-cache-tree.c Convert "struct cache_entry *" to "const ..." wherever possible
test-genrandom.c tests: use a lowercase "usage:" string
test-index-version.c sparse: Fix mingw_main() argument number/type errors
test-line-buffer.c replace {pre,suf}fixcmp() with {starts,ends}_with()
test-match-trees.c use 'tree-ish' instead of 'treeish'
test-mergesort.c sparse: Fix mingw_main() argument number/type errors
test-mktemp.c Improve error messages when temporary file creation fails
test-parse-options.c sparse: Fix mingw_main() argument number/type errors
test-path-utils.c path-utils test: rename mingw_path function to print_path
test-prio-queue.c prio-queue: priority queue of pointers to structs
test-read-cache.c read-cache: add simple performance test
test-regex.c test-regex: Add a test to check for a bug in the regex routines
test-revision-walking.c Teach revision walking machinery to walk multiple times sequencially
test-run-command.c tests: check error message from run_command
test-scrap-cache-tree.c Add test-scrap-cache-tree
test-sha1.c test-sha1: add a binary output mode more tr portability test script fixes
test-sigchain.c t0005: use SIGTERM for sigchain test
test-string-list.c replace {pre,suf}fixcmp() with {starts,ends}_with()
test-subprocess.c sparse: Fix mingw_main() argument number/type errors
test-svn-fe.c msvc: test-svn-fe: Fix linker "unresolved external" error
test-urlmatch-normalization.c builtin/config.c: compilation fix
test-wildmatch.c Makefile: add USE_WILDMATCH to use wildmatch as fnmatch
thread-utils.c mingw: rename WIN32 cpp macro to GIT_WINDOWS_NATIVE
thread-utils.h thread-utils.h: simplify the inclusion
trace.c shallow.c: the 8 steps to select new commits for .git/shallow
transport-helper.c Merge branch 'ef/mingw-write'
transport.c Merge branch 'nd/shallow-clone'
transport.h fetch: add --update-shallow to accept refs that update .git/shallow
tree-diff.c pathspec: stop --*-pathspecs impact on internal parse_pathspec() uses
tree-walk.c Merge branch 'as/tree-walk-fix-aggressive-short-cut'
tree-walk.h unpack-trees: don't shift conflicts left and right
tree.c Merge branch 'jk/free-tree-buffer'
tree.h Merge branch 'jk/free-tree-buffer' Makefile: allow building without perl
unix-socket.c unix-socket: do not let close() or chdir() clobber errno during cleanup
unix-socket.h credentials: add "cache" helper
unpack-trees.c Prevent buffer overflows when path is too long
unpack-trees.h diff-lib, read-tree, unpack-trees: mark cache_entry array paramters c…
upload-pack.c Merge branch 'nd/shallow-clone'
url.c Merge branch 'jk/http-auth'
url.h url: decode buffers that are not NUL-terminated
urlmatch.c urlmatch.c: recompute pointer after append_normalized_escapes
urlmatch.h config: add generic callback wrapper to parse section.<url>.key
usage.c Merge branch 'jk/a-thread-only-dies-once' into maint
userdiff.c userdiff: update Ada patterns
userdiff.h refactor get_textconv to not require diff_filespec
utf8.c pretty: Fix bug in truncation support for %>, %< and %><
utf8.h add missing "format" function attributes
varint.c varint: make it available outside the context of pack
varint.h varint: make it available outside the context of pack
version.c include agent identifier in capability string
version.h include agent identifier in capability string
walker.c clear parsed flag when we free tree buffers
walker.h http: init and cleanup separately from http-walker
wildmatch.c wildmatch: properly fold case everywhere
wildmatch.h wildmatch: support "no FNM_PATHNAME" mode wrap-for-bin: make bin-wrappers chainable
wrapper.c typofixes: fix misspelt comments
write_or_die.c write_or_die: raise SIGPIPE when we get EPIPE
ws.c Rename git_checkattr() to git_check_attr()
wt-status.c Merge branch 'cc/starts-n-ends-with'
wt-status.h commit -v: strip diffs and submodule shortlogs from the commit message
xdiff-interface.c xdiff: remove emit_func() and xdi_diff_hunks()
xdiff-interface.h xdiff: remove emit_func() and xdi_diff_hunks()
zlib.c zlib: fix compilation failures with Sun C Compilaer



	Git - the stupid content tracker


"git" can mean anything, depending on your mood.

 - random three-letter combination that is pronounceable, and not
   actually used by any common UNIX command.  The fact that it is a
   mispronunciation of "get" may or may not be relevant.
 - stupid. contemptible and despicable. simple. Take your pick from the
   dictionary of slang.
 - "global information tracker": you're in a good mood, and it actually
   works for you. Angels sing, and a light suddenly fills the room.
 - "goddamn idiotic truckload of sh*t": when it breaks

Git is a fast, scalable, distributed revision control system with an
unusually rich command set that provides both high-level operations
and full access to internals.

Git is an Open Source project covered by the GNU General Public
License version 2 (some parts of it are under different licenses,
compatible with the GPLv2). It was originally written by Linus
Torvalds with help of a group of hackers around the net.

Please read the file INSTALL for installation instructions.

See Documentation/gittutorial.txt to get started, then see
Documentation/everyday.txt for a useful minimum set of commands, and
Documentation/git-commandname.txt for documentation of each command.
If git has been correctly installed, then the tutorial can also be
read with "man gittutorial" or "git help tutorial", and the
documentation of each command with "man git-commandname" or "git help

CVS users may also want to read Documentation/gitcvs-migration.txt
("man gitcvs-migration" or "git help cvs-migration" if git is

Many Git online resources are accessible from
including full documentation and Git related tools.

The user discussion and development of Git take place on the Git
mailing list -- everyone is welcome to post bug reports, feature
requests, comments and patches to (read
Documentation/SubmittingPatches for instructions on patch submission).
To subscribe to the list, send an email with just "subscribe git" in
the body to The mailing list archives are
available at, and other archival sites.

The maintainer frequently sends the "What's cooking" reports that
list the current status of various development topics to the mailing
list.  The discussion following them give a good reference for
project status, development direction and remaining tasks.
Something went wrong with that request. Please try again.