Git with broken hash generation to generate collisions between object IDs. Don't use this! https://undefinedbehavior.de/posts/commit-vandalism/
Go to file
Jeff King d38379ece9 make update-server-info more robust
Since "git update-server-info" may be called automatically
as part of a push or a "gc --auto", we should be robust
against two processes trying to update it simultaneously.
However, we currently use a fixed tempfile, which means that
two simultaneous writers may step on each other's toes and
end up renaming junk into place.

Let's instead switch to using a unique tempfile via mkstemp.
We do not want to use a lockfile here, because it's OK for
two writers to simultaneously update (one will "win" the
rename race, but that's OK; they should be writing the same
information).

While we're there, let's clean up a few other things:

  1. Detect write errors. Report them and abort the update
     if any are found.

  2. Free path memory rather than leaking it (and clean up
     the tempfile when necessary).

  3. Use the pathdup functions consistently rather than
     static buffers or manually calculated lengths.

This last one fixes a potential overflow of "infofile" in
update_info_packs (e.g., by putting large junk into
$GIT_OBJECT_DIRECTORY). However, this overflow was probably
not an interesting attack vector for two reasons:

  a. The attacker would need to control the environment to
     do this, in which case it was already game-over.

  b. During its setup phase, git checks that the directory
     actually exists, which means it is probably shorter
     than PATH_MAX anyway.

Because both update_info_refs and update_info_packs share
these same failings (and largely duplicate each other), this
patch factors out the improved error-checking version into a
helper function.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2014-09-15 11:38:13 -07:00
block-sha1 Merge branch 'jk/pack-bitmap' 2014-02-27 14:01:48 -08:00
builtin prune-packed: fix minor memory leak 2014-09-15 11:37:43 -07:00
compat Merge branch 'sk/mingw-uni-fix-more' 2014-07-30 14:21:09 -07:00
contrib various contrib: Fix links in man pages 2014-08-07 09:43:21 -07:00
Documentation Git 2.1 2014-08-15 15:09:12 -07:00
ewah ewah: delete unused ewah_read_mmap_native declaration 2014-04-29 12:43:16 -07:00
git-gui Merge git://repo.or.cz/git-gui 2014-06-26 13:44:11 -07:00
gitk-git Merge branch 'master' of git://ozlabs.org/~paulus/gitk 2014-08-10 11:03:03 -07:00
gitweb Merge branch 'jl/nor-or-nand-and' 2014-04-08 12:00:28 -07:00
mergetools mergetools: add vimdiff3 mode 2014-04-22 12:49:07 -07:00
perl Merge branch 'mm/pager-less-sans-S' 2014-06-06 11:02:59 -07:00
po po/TEAMS: add new members to German translation team 2014-08-29 07:08:17 +02:00
ppc
t Merge branch 'jk/diff-tree-t-fix' 2014-08-26 11:16:26 -07:00
templates sample pre-commit hook: use --bool when retrieving config var 2013-09-24 12:26:49 -07:00
vcs-svn strbuf: introduce starts_with() and ends_with() 2013-12-05 14:12:52 -08:00
xdiff git-merge-file: do not add LF at EOF while applying unrelated change 2014-06-30 14:07:58 -07:00
.gitattributes
.gitignore Merge branch 'nd/split-index' 2014-07-16 11:25:40 -07:00
.mailmap Sync with v2.0.3 2014-07-23 11:36:40 -07:00
abspath.c Merge branch 'ap/path-max' 2014-01-10 10:32:18 -08:00
aclocal.m4
advice.c refactor skip_prefix to return a boolean 2014-06-20 10:44:43 -07:00
advice.h Merge branch 'jc/push-2.0-default-to-simple' 2014-03-07 15:13:15 -08:00
alias.c use skip_prefix to avoid magic numbers 2014-06-20 10:44:45 -07:00
alloc.c alloc: factor out commit index 2014-07-28 10:14:33 -07:00
archive-tar.c archive-tar: use parse_config_key when parsing config 2013-01-23 08:41:50 -08:00
archive-zip.c Merge branch 'sb/archive-zip-double-assignment-fix' into maint 2013-07-19 10:40:53 -07:00
archive.c Merge branch 'rm/strchrnul-not-strlen' 2014-03-18 13:51:18 -07:00
archive.h archive: convert to use parse_pathspec 2013-07-15 10:56:07 -07:00
argv-array.c argv-array: drop "detach" code 2014-05-15 09:49:12 -07:00
argv-array.h argv-array: drop "detach" code 2014-05-15 09:49:12 -07:00
attr.c attr.c: use ALLOC_GROW() in handle_attr_line() 2014-03-03 14:54:37 -08:00
attr.h
base85.c base85.c: have SP around arithmetic operators 2013-10-16 10:27:26 -07:00
bisect.c Merge branch 'nd/log-show-linear-break' 2014-04-03 12:38:11 -07:00
bisect.h Move print_commit_list to libgit.a 2012-10-29 03:08:30 -04:00
blob.c add object_as_type helper for casting objects 2014-07-28 10:14:33 -07:00
blob.h
branch.c refactor skip_prefix to return a boolean 2014-06-20 10:44:43 -07:00
branch.h
builtin.h verify-commit: scriptable commit signature verification 2014-06-23 15:50:31 -07:00
bulk-checkin.c finish_tmp_packfile():use strbuf for pathname construction 2014-03-03 12:15:10 -08:00
bulk-checkin.h
bundle.c bundle: use internal argv_array of struct child_process in create_bundle() 2014-07-18 12:14:47 -07:00
bundle.h
cache-tree.c cache-tree: mark istate->cache_changed on prime_cache_tree() 2014-06-13 11:49:39 -07:00
cache-tree.h cache-tree: mark istate->cache_changed on prime_cache_tree() 2014-06-13 11:49:39 -07:00
cache.h alloc: factor out commit index 2014-07-28 10:14:33 -07:00
check_bindir check_bindir: avoid "test <cond> -a/-o <cond>" 2014-06-09 14:47:06 -07:00
check-builtins.sh check-builtins.sh: use the $(...) construct for command substitution 2014-03-25 13:42:52 -07:00
check-racy.c
color.c make color.ui default to 'auto' 2013-06-10 10:55:42 -07:00
color.h
column.c refactor skip_prefix to return a boolean 2014-06-20 10:44:43 -07:00
column.h
combine-diff.c Merge branch 'jk/diff-tree-t-fix' 2014-08-26 11:16:26 -07:00
command-list.txt verify-commit: scriptable commit signature verification 2014-06-23 15:50:31 -07:00
commit-slab.h commit-slab: provide a static initializer 2014-06-13 12:08:17 -07:00
commit.c add object_as_type helper for casting objects 2014-07-28 10:14:33 -07:00
commit.h Merge branch 'cc/replace-graft' 2014-07-27 15:14:18 -07:00
config.c Merge branch 'jk/misc-fixes-maint' 2014-07-28 11:30:41 -07:00
config.mak.in Merge branch 'jc/remove-export-from-config-mak-in' 2013-04-01 09:00:02 -07:00
config.mak.uname Merge branch 'sk/mingw-uni-fix-more' 2014-07-30 14:21:09 -07:00
configure.ac Merge branch 'ks/tree-diff-nway' 2014-06-03 12:06:40 -07:00
connect.c Merge branch 'maint' 2014-07-21 12:35:39 -07:00
connect.h connect.c: refactor url parsing 2013-12-09 14:54:48 -08:00
connected.c use strip_suffix instead of ends_with in simple cases 2014-06-30 13:43:17 -07:00
connected.h connected.c: add new variant that runs with --shallow-file 2013-12-10 16:14:18 -08:00
convert.c use skip_prefix to avoid magic numbers 2014-06-20 10:44:45 -07:00
convert.h typofix: in-code comments 2013-07-22 16:06:49 -07:00
copy.c
COPYING
credential-cache--daemon.c refactor skip_prefix to return a boolean 2014-06-20 10:44:43 -07:00
credential-cache.c
credential-store.c sparse: Fix mingw_main() argument number/type errors 2013-04-28 12:32:08 -07:00
credential.c refactor skip_prefix to return a boolean 2014-06-20 10:44:43 -07:00
credential.h
csum-file.c Merge branch 'jk/sha1write-void' 2014-01-10 10:33:09 -08:00
csum-file.h Merge branch 'jk/sha1write-void' 2014-01-10 10:33:09 -08:00
ctype.c ctype: support iscntrl, ispunct, isxdigit and isprint 2012-10-15 14:58:16 -07:00
daemon.c Merge branch 'cc/replace-edit' 2014-07-16 11:25:47 -07:00
date.c i18n: fix uncatchable comments for translators in date.c 2014-04-17 11:03:28 -07:00
decorate.c hashmap: factor out getting a hash code from a SHA1 2014-07-07 13:56:24 -07:00
decorate.h
delta.h comments: fix misuses of "nor" 2014-03-31 15:29:27 -07:00
diff-delta.c create_delta_index: simplify condition always evaluating to true 2013-08-18 12:56:23 -07:00
diff-lib.c Merge branch 'jk/diff-files-assume-unchanged' into maint 2014-06-25 11:47:09 -07:00
diff-no-index.c Merge branch 'jc/fix-diff-no-index-diff-opt-parse' into maint 2014-04-09 11:59:16 -07:00
diff.c Merge branch 'bg/xcalloc-nmemb-then-size' into maint 2014-07-22 10:25:17 -07:00
diff.h Merge branch 'ks/tree-diff-nway' 2014-06-03 12:06:40 -07:00
diffcore-break.c diffcore-break: don't divide by zero 2013-04-03 12:48:02 -07:00
diffcore-delta.c
diffcore-order.c Merge branch 'nd/no-more-fnmatch' 2014-03-14 14:25:31 -07:00
diffcore-pickaxe.c pickaxe: simplify kwset loop in contains() 2014-03-24 15:13:17 -07:00
diffcore-rename.c hashmap: add simplified hashmap_get_from_hash() API 2014-07-07 13:56:35 -07:00
diffcore.h Merge branch 'nd/diff-quiet-stat-dirty' into maint 2014-03-18 13:59:56 -07:00
dir.c prep_exclude: remove the artificial PATH_MAX limit 2014-07-14 15:24:34 -07:00
dir.h prep_exclude: remove the artificial PATH_MAX limit 2014-07-14 15:24:34 -07:00
editor.c editor: use canonicalized absolute path 2013-07-29 12:15:27 -07:00
entry.c read-cache: mark updated entries for split index 2014-06-13 11:49:40 -07:00
environment.c setup_git_env(): introduce git_path_from_env() helper 2014-06-25 10:33:27 -07:00
exec_cmd.c
exec_cmd.h Add the LAST_ARG_MUST_BE_NULL macro 2013-07-19 09:26:15 -07:00
fast-import.c fast-import: use hashcmp() for SHA1 hash comparison 2014-07-18 12:14:47 -07:00
fetch-pack.c Merge branch 'jk/skip-prefix' 2014-07-09 11:33:28 -07:00
fetch-pack.h Merge branch 'nd/shallow-clone' 2014-01-17 12:21:20 -08:00
fmt-merge-msg.h
fsck.c fsck: simplify fsck_commit_buffer() by using commit_list_count() 2014-07-10 14:10:27 -07:00
fsck.h
generate-cmdlist.sh
gettext.c gettext.c: detect the vsnprintf bug at runtime 2013-12-04 16:10:51 -08:00
gettext.h Merge branch 'nd/fetch-status-alignment' 2012-09-18 14:35:55 -07:00
git-add--interactive.perl Merge branch 'jl/nor-or-nand-and' 2014-04-08 12:00:28 -07:00
git-am.sh Merge branch 'jl/nor-or-nand-and' 2014-04-08 12:00:28 -07:00
git-archimport.perl git-archimport: use a lowercase "usage:" string 2013-02-24 13:31:06 -08:00
git-bisect.sh git-bisect.sh: avoid "test <cond> -a/-o <cond>" 2014-06-09 14:47:07 -07:00
git-compat-util.h Revert "Merge branch 'dt/refs-check-refname-component-sse'" 2014-07-28 10:41:53 -07:00
git-cvsexportcommit.perl git-cvsexportcommit: use a lowercase "usage:" string 2013-02-24 13:31:07 -08:00
git-cvsimport.perl git-cvsimport: use a lowercase "usage:" string 2013-02-24 13:31:07 -08:00
git-cvsserver.perl Merge branch 'ak/cvsserver-stabilize-use-of-hash-keys' 2013-11-04 14:58:05 -08:00
git-difftool--helper.sh difftool: display the number of files in the diff queue in the prompt 2013-12-06 14:00:27 -08:00
git-difftool.perl difftool: support repositories with .git-files 2014-02-24 09:53:57 -08:00
git-filter-branch.sh filter-branch: eliminate duplicate mapped parents 2014-07-01 08:30:41 -07:00
git-instaweb.sh git-instaweb: add support for Apache 2.4 2014-05-27 12:57:19 -07:00
git-merge-octopus.sh
git-merge-one-file.sh Merge branch 'kb/p4merge' 2013-03-26 13:15:24 -07:00
git-merge-resolve.sh
git-mergetool--lib.sh remove #!interpreter line from shell libraries 2013-11-26 14:23:56 -08:00
git-mergetool.sh git-mergetool.sh: avoid "test <cond> -a/-o <cond>" 2014-06-09 14:47:07 -07:00
git-p4.py git-p4: fix submit in non --prepare-p4-only mode 2014-06-13 11:04:04 -07:00
git-parse-remote.sh remove #!interpreter line from shell libraries 2013-11-26 14:23:56 -08:00
git-pull.sh Sync with maint 2014-06-12 12:22:38 -07:00
git-quiltimport.sh git-sh-setup.sh: add variable to use the stuck-long mode 2014-02-03 12:11:10 -08:00
git-rebase--am.sh rebase: omit patch-identical commits with --fork-point 2014-07-16 13:07:40 -07:00
git-rebase--interactive.sh rebase: omit patch-identical commits with --fork-point 2014-07-16 13:07:40 -07:00
git-rebase--merge.sh Merge branch 'bc/fix-rebase-merge-skip' into maint 2014-07-16 11:16:16 -07:00
git-rebase.sh rebase: omit patch-identical commits with --fork-point 2014-07-16 13:07:40 -07:00
git-relink.perl git-relink: use a lowercase "usage:" string 2013-02-24 13:31:06 -08:00
git-remote-testgit.sh Merge branch 'ep/shell-assign-and-export-vars' into maint 2014-07-22 10:22:57 -07:00
git-request-pull.sh Merge branch 'lt/request-pull' 2014-05-19 10:35:36 -07:00
git-send-email.perl Merge branch 'mt/send-email-cover-to-cc' 2014-06-20 13:12:20 -07:00
git-sh-i18n.sh remove #!interpreter line from shell libraries 2013-11-26 14:23:56 -08:00
git-sh-setup.sh pager: remove 'S' from $LESS by default 2014-05-07 13:41:04 -07:00
git-stash.sh Merge branch 'ep/shell-assign-and-export-vars' into maint 2014-07-22 10:22:57 -07:00
git-submodule.sh git-submodule.sh: avoid "echo" path-like values 2014-06-19 13:30:03 -07:00
git-svn.perl Git 2.0: git svn: Set default --prefix='origin/' if --prefix is not given 2014-04-19 11:30:13 +00:00
GIT-VERSION-GEN Git 2.1 2014-08-15 15:09:12 -07:00
git-web--browse.sh git-web--browse.sh: use the $( ... ) construct for command substitution 2014-04-23 15:17:02 -07:00
git.c Merge branch 'kb/perf-trace' 2014-07-22 10:59:19 -07:00
git.rc Makefile: Fix compilation of Windows resource file 2014-01-23 10:00:28 -08:00
git.spec.in
gpg-interface.c gpg-interface: provide access to the payload 2014-06-23 15:50:30 -07:00
gpg-interface.h gpg-interface: provide access to the payload 2014-06-23 15:50:30 -07:00
graph.c graph: fix coloring around octopus merges 2013-10-18 12:48:48 -07:00
graph.h Revert "graph.c: mark private file-scope symbols as static" 2013-03-03 19:43:54 -08:00
grep.c Merge branch 'as/grep-fullname-config' 2014-06-03 12:06:39 -07:00
grep.h grep: allow to use textconv filters 2013-05-10 10:27:31 -07:00
hashmap.c hashmap: add string interning API 2014-07-07 13:56:38 -07:00
hashmap.h hashmap: add string interning API 2014-07-07 13:56:38 -07:00
help.c Merge branch 'jk/strip-suffix' 2014-07-16 11:26:00 -07:00
help.h help: add help_unknown_ref() 2013-05-08 15:31:54 -07:00
hex.c
http-backend.c Merge branch 'maint' 2014-07-21 12:35:39 -07:00
http-fetch.c
http-push.c Merge branch 'ah/fix-http-push' into maint 2014-07-22 10:29:07 -07:00
http-walker.c use xstrfmt to replace xmalloc + sprintf 2014-06-19 15:20:54 -07:00
http.c Merge branch 'jk/skip-prefix' 2014-07-09 11:33:28 -07:00
http.h http: optionally extract charset parameter from content-type 2014-05-27 09:59:19 -07:00
ident.c Merge branch 'jk/split-broken-ident' into maint 2013-11-07 14:34:51 -08:00
imap-send.c imap-send: use skip_prefix instead of using magic numbers 2014-06-20 10:45:19 -07:00
INSTALL Fix profile feedback with -jN and add profile-fast 2014-07-08 10:56:47 -07:00
khash.h hashmap: factor out getting a hash code from a SHA1 2014-07-07 13:56:24 -07:00
kwset.c typofix: in-code comments 2013-07-22 16:06:49 -07:00
kwset.h
levenshtein.c
levenshtein.h
LGPL-2.1
line-log.c use commit_list_count() to count the members of commit_lists 2014-07-17 13:36:25 -07:00
line-log.h range-set: publish API for re-use by git-blame -L 2013-08-06 14:27:20 -07:00
line-range.c line-range: reject -L line numbers less than 1 2013-08-06 14:48:55 -07:00
line-range.h line-range: teach -L/RE/ to search relative to anchor point 2013-08-06 14:36:34 -07:00
list-objects.c Merge branch 'jk/pack-bitmap' 2014-04-08 12:00:33 -07:00
list-objects.h list-objects: reduce one argument in mark_edges_uninteresting 2013-08-28 11:54:18 -07:00
ll-merge.c convert some config callbacks to parse_config_key 2013-01-23 08:41:50 -08:00
ll-merge.h
lockfile.c Merge branch 'rs/ref-transaction-0' 2014-07-21 11:18:37 -07:00
log-tree.c Merge branch 'zk/log-graph-showsig' into maint 2014-07-22 10:28:51 -07:00
log-tree.h pretty: share code between format_decoration and show_decorations 2013-04-18 16:28:27 -07:00
mailmap.c Merge branch 'jc/strcasecmp-pure-inline' 2013-09-24 23:28:13 -07:00
mailmap.h mailmap: simplify map_user() interface 2013-01-10 12:33:08 -08:00
Makefile Merge branch 'jk/fix-profile-feedback-build' 2014-08-26 11:16:25 -07:00
match-trees.c use xstrfmt to replace xmalloc + sprintf 2014-06-19 15:20:54 -07:00
merge-blobs.c Which merge_file() function do you mean? 2012-12-09 23:05:27 -08:00
merge-blobs.h Which merge_file() function do you mean? 2012-12-09 23:05:27 -08:00
merge-recursive.c Merge branch 'ta/string-list-init' 2014-07-23 11:35:54 -07:00
merge-recursive.h Move try_merge_command and checkout_fast_forward to libgit.a 2012-10-29 03:08:30 -04:00
merge.c Merge branch 'nd/split-index' 2014-07-16 11:25:40 -07:00
mergesort.c
mergesort.h
name-hash.c hashmap: add simplified hashmap_get_from_hash() API 2014-07-07 13:56:35 -07:00
notes-cache.c Merge branch 'jk/commit-buffer-length' 2014-07-02 12:53:02 -07:00
notes-cache.h
notes-merge.c commit: record buffer length in cache 2014-06-13 12:09:38 -07:00
notes-merge.h Move create_notes_commit() from notes-merge.c into notes-utils.c 2013-06-12 10:38:13 -07:00
notes-utils.c Merge branch 'jk/commit-buffer-length' 2014-07-02 12:53:02 -07:00
notes-utils.h commit_tree: take a pointer/len pair rather than a const strbuf 2014-06-12 10:29:41 -07:00
notes.c notes.c: rearrange xcalloc arguments 2014-05-27 14:02:45 -07:00
notes.h many small typofixes 2013-07-29 12:32:25 -07:00
object.c object_as_type: set commit index 2014-07-28 10:14:34 -07:00
object.h add object_as_type helper for casting objects 2014-07-28 10:14:33 -07:00
pack-bitmap-write.c Use hashcpy() when copying object names 2014-03-06 14:03:12 -08:00
pack-bitmap.c add ignore_missing_links mode to revwalk 2014-04-04 13:31:38 -07:00
pack-bitmap.h pack-bitmap: implement optional name_hash cache 2013-12-30 12:19:23 -08:00
pack-check.c
pack-objects.c hashmap: factor out getting a hash code from a SHA1 2014-07-07 13:56:24 -07:00
pack-objects.h pack-objects: implement bitmap writing 2013-12-30 12:19:22 -08:00
pack-revindex.c pack-revindex.c: rearrange xcalloc arguments 2014-05-27 14:02:45 -07:00
pack-revindex.h do not discard revindex when re-preparing packfiles 2014-01-16 14:33:46 -08:00
pack-write.c finish_tmp_packfile():use strbuf for pathname construction 2014-03-03 12:15:10 -08:00
pack.h finish_tmp_packfile():use strbuf for pathname construction 2014-03-03 12:15:10 -08:00
pager.c Merge branch 'je/pager-do-not-recurse' 2014-06-06 11:17:00 -07:00
parse-options-cb.c prune: introduce OPT_EXPIRY_DATE() and use it 2013-04-25 11:42:10 -07:00
parse-options.c refactor skip_prefix to return a boolean 2014-06-20 10:44:43 -07:00
parse-options.h Merge branch 'jk/squelch-compiler-warning-from-funny-error-macro' 2014-06-06 11:21:36 -07:00
patch-delta.c
patch-ids.c patch-ids.c: use ALLOC_GROW() in add_commit() 2014-03-03 14:49:12 -08:00
patch-ids.h
path.c Merge branch 'rs/code-cleaning' 2014-07-22 10:59:37 -07:00
pathspec.c Merge branch 'maint' 2014-07-21 12:35:39 -07:00
pathspec.h Support pathspec magic :(exclude) and its short form :! 2013-12-06 13:00:39 -08:00
pkt-line.c trace: improve trace performance 2014-07-13 21:24:23 -07:00
pkt-line.h comments: fix misuses of "nor" 2014-03-31 15:29:27 -07:00
preload-index.c cache.h: rename cache_def_free to cache_def_clear 2014-07-13 10:12:37 -07:00
pretty.c Merge branch 'rs/code-cleaning' 2014-07-22 10:59:37 -07:00
prio-queue.c prio-queue: make output stable with respect to insertion 2014-07-15 11:02:54 -07:00
prio-queue.h prio-queue: make output stable with respect to insertion 2014-07-15 11:02:54 -07:00
progress.c progress: simplify performance measurement by using getnanotime() 2014-07-13 21:25:21 -07:00
progress.h
prompt.c Revert "prompt: clean up strbuf usage" 2014-01-02 10:21:40 -08:00
prompt.h
quote.c quote: remove sq_quote_print() 2013-07-30 08:13:38 -07:00
quote.h quote: remove sq_quote_print() 2013-07-30 08:13:38 -07:00
reachable.c clear parsed flag when we free tree buffers 2013-06-06 10:29:12 -07:00
reachable.h
read-cache.c Merge branch 'nd/split-index' 2014-07-16 11:25:40 -07:00
README Merge branch 'ta/doc-no-small-caps' 2013-02-05 16:13:32 -08:00
reflog-walk.c reflog-walk.c: rearrange xcalloc arguments 2014-05-27 14:02:45 -07:00
reflog-walk.h
refs.c Revert "Merge branch 'dt/refs-check-refname-component-sse'" 2014-07-28 10:41:53 -07:00
refs.h Merge branch 'rs/unify-is-branch' 2014-07-21 11:18:57 -07:00
RelNotes Git 2.0.4 2014-07-30 14:19:53 -07:00
remote-curl.c Merge branch 'jk/remote-curl-squelch-extra-errors' 2014-07-21 11:18:41 -07:00
remote-testsvn.c remote-testsvn: use internal argv_array of struct child_process in cmd_import() 2014-07-18 12:50:03 -07:00
remote.c Merge branch 'jk/xstrfmt' 2014-07-09 11:34:05 -07:00
remote.h push: detect local refspec errors early 2014-03-05 13:23:27 -08:00
replace_object.c Merge branch 'dd/use-alloc-grow' 2014-03-18 13:50:21 -07:00
rerere.c Merge branch 'rs/code-cleaning' 2014-07-16 11:33:09 -07:00
rerere.h rerere: convert to use parse_pathspec 2013-07-15 10:56:07 -07:00
resolve-undo.c resolve-undo: be specific what part of the index has changed 2014-06-13 11:49:38 -07:00
resolve-undo.h convert unmerge_cache to take struct pathspec 2013-07-15 10:56:08 -07:00
revision.c Merge branch 'jk/commit-buffer-length' into maint 2014-07-16 11:16:38 -07:00
revision.h Merge branch 'jk/pack-bitmap' 2014-04-08 12:00:33 -07:00
run-command.c Merge branch 'sk/mingw-uni-fix-more' 2014-07-30 14:21:09 -07:00
run-command.h run-command: store an optional argv_array 2014-05-15 09:49:09 -07:00
send-pack.c Merge branch 'nd/shallow-clone' 2014-01-17 12:21:20 -08:00
send-pack.h remote.h: replace struct extra_have_objects with struct sha1_array 2013-12-10 16:14:15 -08:00
sequencer.c Merge branch 'nd/split-index' 2014-07-16 11:25:40 -07:00
sequencer.h cherry-pick, revert: add the --gpg-sign option 2014-01-27 15:15:52 -08:00
server-info.c make update-server-info more robust 2014-09-15 11:38:13 -07:00
setup.c Merge branch 'mw/symlinks' into maint 2014-05-28 15:45:57 -07:00
sh-i18n--envsubst.c use xmemdupz() to allocate copies of strings given by start and length 2014-07-21 10:37:02 -07:00
sha1_file.c Merge branch 'kb/perf-trace' 2014-07-22 10:59:19 -07:00
sha1_name.c Merge branch 'jk/misc-fixes-maint' 2014-07-28 11:30:41 -07:00
sha1-array.c sha1-array.c: mark a private file-scope symbol as static 2012-09-15 22:58:21 -07:00
sha1-array.h sha1-array.c: mark a private file-scope symbol as static 2012-09-15 22:58:21 -07:00
sha1-lookup.c sha1-lookup: handle duplicate keys with GIT_USE_LOOKUP 2013-08-24 22:31:20 -07:00
sha1-lookup.h
shallow.c trace: improve trace performance 2014-07-13 21:24:23 -07:00
shell.c use xstrfmt to replace xmalloc + strcpy/strcat 2014-06-19 15:20:54 -07:00
shortlog.h
show-index.c
sideband.c sideband.c: do not use ANSI control sequence on non-terminal 2014-06-02 11:02:27 -07:00
sideband.h pkt-line: move LARGE_PACKET_MAX definition from sideband 2013-02-20 13:42:22 -08:00
sigchain.c
sigchain.h
split-index.c update-index: new options to enable/disable split index mode 2014-06-13 11:49:41 -07:00
split-index.h split-index: the reading part 2014-06-13 11:49:40 -07:00
strbuf.c Merge branch 'jk/strip-suffix' 2014-07-16 11:26:00 -07:00
strbuf.h Merge branch 'jk/strip-suffix' 2014-07-16 11:26:00 -07:00
streaming.c open_istream(): do not dereference NULL in the error case 2014-02-18 16:00:53 -08:00
streaming.h
string-list.c string-list: add string_list initializer helper function 2014-07-21 10:23:36 -07:00
string-list.h string-list: add string_list initializer helper function 2014-07-21 10:23:36 -07:00
submodule.c Merge branch 'ta/string-list-init' 2014-07-23 11:35:54 -07:00
submodule.h rm: delete .gitmodules entry of submodules removed from the work tree 2013-08-06 14:11:00 -07:00
symlinks.c symlinks: remove PATH_MAX limitation 2014-07-07 11:22:42 -07:00
tag.c add object_as_type helper for casting objects 2014-07-28 10:14:33 -07:00
tag.h
tar.h
test-chmtime.c comments: fix misuses of "nor" 2014-03-31 15:29:27 -07:00
test-ctype.c
test-date.c
test-delta.c tests: use a lowercase "usage:" string 2013-02-24 21:30:10 -08:00
test-dump-cache-tree.c cache-tree: mark istate->cache_changed on cache tree update 2014-06-13 11:49:39 -07:00
test-dump-split-index.c t1700: new tests for split-index mode 2014-06-13 11:49:42 -07:00
test-genrandom.c tests: use a lowercase "usage:" string 2013-02-24 21:30:10 -08:00
test-hashmap.c hashmap: add string interning API 2014-07-07 13:56:38 -07:00
test-index-version.c sparse: Fix mingw_main() argument number/type errors 2013-04-28 12:32:08 -07:00
test-line-buffer.c replace {pre,suf}fixcmp() with {starts,ends}_with() 2013-12-05 14:13:21 -08:00
test-match-trees.c use 'tree-ish' instead of 'treeish' 2013-09-04 15:02:56 -07:00
test-mergesort.c sparse: Fix mingw_main() argument number/type errors 2013-04-28 12:32:08 -07:00
test-mktemp.c
test-parse-options.c parse-options: remove unused OPT_SET_PTR 2014-03-31 13:01:19 -07:00
test-path-utils.c path-utils test: rename mingw_path function to print_path 2013-10-14 07:32:53 -07:00
test-prio-queue.c prio-queue: priority queue of pointers to structs 2013-06-11 15:15:21 -07:00
test-read-cache.c read-cache: add simple performance test 2013-06-09 17:03:00 -07:00
test-regex.c test-regex: Add a test to check for a bug in the regex routines 2012-09-02 18:57:21 -07:00
test-revision-walking.c
test-run-command.c
test-scrap-cache-tree.c read-cache: new API write_locked_index instead of write_index/write_cache 2014-06-13 11:49:10 -07:00
test-sha1.c test-sha1: add a binary output mode 2013-08-22 16:39:46 -07:00
test-sha1.sh
test-sigchain.c
test-string-list.c replace {pre,suf}fixcmp() with {starts,ends}_with() 2013-12-05 14:13:21 -08:00
test-subprocess.c sparse: Fix mingw_main() argument number/type errors 2013-04-28 12:32:08 -07:00
test-svn-fe.c msvc: test-svn-fe: Fix linker "unresolved external" error 2013-02-25 12:40:34 -08:00
test-urlmatch-normalization.c builtin/config.c: compilation fix 2013-08-09 09:20:38 -07:00
test-wildmatch.c stop using fnmatch (either native or compat) 2014-02-20 14:16:11 -08:00
thread-utils.c mingw: rename WIN32 cpp macro to GIT_WINDOWS_NATIVE 2013-05-08 12:14:35 -07:00
thread-utils.h
trace.c git: add performance tracing for git's main() function to debug scripts 2014-07-13 21:25:21 -07:00
trace.h git: add performance tracing for git's main() function to debug scripts 2014-07-13 21:25:21 -07:00
transport-helper.c transport-helper: avoid reading past end-of-string 2014-06-20 10:44:44 -07:00
transport.c Merge branch 'jk/misc-fixes-maint' 2014-07-28 11:30:41 -07:00
transport.h fetch: add --update-shallow to accept refs that update .git/shallow 2013-12-10 16:14:17 -08:00
tree-diff.c tree-diff: rework diff_tree() to generate diffs for multiparent cases as well 2014-04-07 14:40:46 -07:00
tree-walk.c cleanup duplicate name_compare() functions 2014-06-20 10:12:14 -07:00
tree-walk.h tree-walk: finally switch over tree descriptors to contain a pre-parsed entry 2014-02-24 14:43:29 -08:00
tree.c add object_as_type helper for casting objects 2014-07-28 10:14:33 -07:00
tree.h Merge branch 'jk/free-tree-buffer' 2013-09-17 11:37:33 -07:00
unicode_width.h Update of unicode_width.h to Unicode Version 7.0 2014-06-18 10:53:45 -07:00
unimplemented.sh Makefile: allow building without perl 2009-04-08 22:14:56 -07:00
unix-socket.c unix-socket: remove stale socket before calling chdir() 2014-07-21 09:38:07 -07:00
unix-socket.h
unpack-trees.c Merge branch 'nd/split-index' 2014-07-16 11:25:40 -07:00
unpack-trees.h diff-lib, read-tree, unpack-trees: mark cache_entry array paramters const 2013-06-02 15:31:14 -07:00
update_unicode.sh utf8: make it easier to auto-update git_wcwidth() 2014-05-12 10:38:01 -07:00
upload-pack.c Merge branch 'nd/log-show-linear-break' 2014-04-03 12:38:11 -07:00
url.c use strbuf_addch for adding single characters 2014-07-10 14:06:46 -07:00
url.h
urlmatch.c refactor skip_prefix to return a boolean 2014-06-20 10:44:43 -07:00
urlmatch.h config: add generic callback wrapper to parse section.<url>.key 2013-07-31 14:58:42 -07:00
usage.c Merge branch 'jk/a-thread-only-dies-once' into maint 2013-04-26 11:25:59 -07:00
userdiff.c userdiff: have 'cpp' hunk header pattern catch more C++ anchor points 2014-03-21 15:03:32 -07:00
userdiff.h
utf8.c Merge branch 'tb/unicode-6.3-zero-width' 2014-06-06 11:29:38 -07:00
utf8.h add missing "format" function attributes 2013-07-09 22:23:04 -07:00
varint.c
varint.h
version.c
version.h
versioncmp.c tag: support --sort=<spec> 2014-02-27 14:04:05 -08:00
walker.c walker_fetch: fix minor memory leak 2014-06-19 15:20:56 -07:00
walker.h
wildmatch.c wildmatch: properly fold case everywhere 2013-06-02 14:13:05 -07:00
wildmatch.h wildmatch: support "no FNM_PATHNAME" mode 2013-01-01 15:32:37 -08:00
wrap-for-bin.sh wrap-for-bin: make bin-wrappers chainable 2013-07-08 08:55:34 -07:00
wrapper.c read-cache.c: verify index file before we opportunistically update it 2014-04-10 12:27:58 -07:00
write_or_die.c write_or_die: raise SIGPIPE when we get EPIPE 2013-02-20 13:42:21 -08:00
ws.c use strchrnul() in place of strchr() and strlen() 2014-03-10 08:35:30 -07:00
wt-status.c Merge branch 'kb/perf-trace' 2014-07-22 10:59:19 -07:00
wt-status.h Merge branch 'mm/status-porcelain-format-i18n-fix' 2014-03-31 16:31:25 -07:00
xdiff-interface.c
xdiff-interface.h
zlib.c zlib: fix compilation failures with Sun C Compilaer 2013-04-22 09:49:04 -07:00

////////////////////////////////////////////////////////////////

	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
commandname".

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

Many Git online resources are accessible from http://git-scm.com/
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 git@vger.kernel.org (read
Documentation/SubmittingPatches for instructions on patch submission).
To subscribe to the list, send an email with just "subscribe git" in
the body to majordomo@vger.kernel.org. The mailing list archives are
available at http://news.gmane.org/gmane.comp.version-control.git/,
http://marc.info/?l=git 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.