Git with broken hash generation to generate collisions between object IDs. Don't use this! https://undefinedbehavior.de/posts/commit-vandalism/
Go to file
Miklos Vajna cf10f9fdd5 builtin-commit: use reduce_heads() only when appropriate
Since commit 6bb6b034 (builtin-commit: use commit_tree(), 2008-09-10),
builtin-commit performs a reduce_heads() unconditionally.  However,
it's not always needed, and in some cases even harmful.

reduce_heads() is not needed for the initial commit or for an
"ordinary" commit, because they don't have any or have only one
parent, respectively.

reduce_heads() must be avoided when 'git commit' is run after a 'git
merge --no-ff --no-commit', otherwise it will turn the
non-fast-forward merge into fast-forward.  For the same reason,
reduce_heads() must be avoided when amending such a merge commit.

To resolve this issue, 'git merge' will write info about whether
fast-forward is allowed or not to $GIT_DIR/MERGE_MODE.  Based on this
info, 'git commit' will only perform reduce_heads() when it's
committing a merge and fast-forward is enabled.

Also add test cases to ensure that non-fast-forward merges are
committed and amended properly.

Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2008-10-03 08:18:45 -07:00
arm fix openssl headers conflicting with custom SHA1 implementations 2008-10-02 18:06:56 -07:00
compat mingw: remove use of _getdrive() from lstat/fstat 2008-09-29 08:55:47 -07:00
contrib Add OS X support to the pre-auto-gc example hook 2008-09-30 12:27:20 -07:00
Documentation run-command.c: remove run_command_v_opt_cd() 2008-10-02 18:02:44 -07:00
git-gui Merge git://repo.or.cz/git-gui 2008-09-25 08:41:07 -07:00
gitk-git Merge updated git-gui and gitk that call each other 2008-09-06 18:06:39 -07:00
gitweb Merge branch 'maint' 2008-10-02 18:16:22 -07:00
mozilla-sha1 fix openssl headers conflicting with custom SHA1 implementations 2008-10-02 18:06:56 -07:00
perl Git.pm: Use File::Temp->tempfile instead of ->new 2008-09-10 11:45:22 -07:00
ppc fix openssl headers conflicting with custom SHA1 implementations 2008-10-02 18:06:56 -07:00
t builtin-commit: use reduce_heads() only when appropriate 2008-10-03 08:18:45 -07:00
templates Fix permission bits on sources checked out with an overtight umask 2008-09-09 13:32:32 -07:00
xdiff xmerge.c: "diff3 -m" style clips merge reduction level to EAGER or less 2008-08-30 19:41:43 -07:00
.gitattributes git-gui: Use gitattribute "encoding" for file content display 2008-09-24 12:48:31 -07:00
.gitignore Update .gitignore to ignore git-help 2008-08-13 23:46:03 -07:00
.mailmap .mailmap update 2008-07-19 11:25:51 -07:00
abspath.c is_directory(): a generic helper function 2008-09-09 09:27:45 -07:00
alias.c Move split_cmdline() to alias.c 2008-06-30 22:45:50 -07:00
alloc.c Clean up object creation to use more common code 2007-04-16 23:36:16 -07:00
archive-tar.c archive: remove unused headers 2008-07-19 11:17:43 -07:00
archive-zip.c archive: remove unused headers 2008-07-19 11:17:43 -07:00
archive.c archive.c: make archiver static 2008-10-02 18:03:35 -07:00
archive.h archive: declare struct archiver where it's needed 2008-07-25 17:21:04 -07:00
attr.c Fix buffer overflow in prepare_attr_stack 2008-07-16 14:05:50 -07:00
attr.h Fix funny types used in attribute value representation 2007-04-18 16:17:13 -07:00
base85.c decode_85(): fix missing return. 2007-05-30 15:03:50 -07:00
blob.c Clean up object creation to use more common code 2007-04-16 23:36:16 -07:00
blob.h [PATCH] Anal retentive 'const unsigned char *sha1' 2005-06-08 13:04:53 -07:00
branch.c builtin-commit: use reduce_heads() only when appropriate 2008-10-03 08:18:45 -07:00
branch.h branch: optionally setup branch.*.merge from upstream local branches 2008-02-19 21:17:45 -08:00
builtin-add.c Merge branch 'jc/add-addremove' 2008-08-27 16:39:57 -07:00
builtin-annotate.c War on whitespace 2007-06-07 00:04:01 -07:00
builtin-apply.c Merge branch 'bc/master-diff-hunk-header-fix' 2008-09-29 11:04:20 -07:00
builtin-archive.c Make git archive respect core.autocrlf when creating zip format archives 2008-09-18 19:49:28 -07:00
builtin-blame.c Merge branch 'maint' 2008-09-06 16:47:32 -07:00
builtin-branch.c builtin-branch: fix -v for --[no-]merged 2008-07-27 14:14:01 -07:00
builtin-bundle.c Start conforming code to "git subcmd" style 2008-08-30 13:50:48 -07:00
builtin-cat-file.c Start conforming code to "git subcmd" style 2008-08-30 13:50:48 -07:00
builtin-check-attr.c Make usage strings dash-less 2008-07-13 14:12:48 -07:00
builtin-check-ref-format.c Start conforming code to "git subcmd" style 2008-08-30 13:50:48 -07:00
builtin-checkout-index.c Start conforming code to "git subcmd" style part 2 2008-09-09 08:41:29 -07:00
builtin-checkout.c Merge branch 'maint' into bc/master-diff-hunk-header-fix 2008-09-29 10:52:34 -07:00
builtin-clean.c Make usage strings dash-less 2008-07-13 14:12:48 -07:00
builtin-clone.c Merge branch 'jc/alternate-push' 2008-09-25 09:39:24 -07:00
builtin-commit-tree.c commit_tree(): add a new author parameter 2008-09-10 15:25:46 -07:00
builtin-commit.c builtin-commit: use reduce_heads() only when appropriate 2008-10-03 08:18:45 -07:00
builtin-config.c Make non-static functions, that may be static, static 2008-07-23 18:38:14 -07:00
builtin-count-objects.c Correct output of git-count-objects. 2008-09-08 14:25:43 -07:00
builtin-describe.c Merge branch 'sb/dashless' 2008-07-16 17:22:50 -07:00
builtin-diff-files.c diff/diff-files: do not use --cc too aggressively 2008-09-18 10:49:03 -07:00
builtin-diff-index.c diff*: fix worktree setup 2008-08-28 20:50:10 -07:00
builtin-diff-tree.c Fix git-diff-tree --stdin 2008-09-10 15:00:17 -07:00
builtin-diff.c Merge branch 'maint' 2008-09-18 20:30:12 -07:00
builtin-fast-export.c Fix a warning (on cygwin) to allow -Werror 2008-08-26 16:22:00 -07:00
builtin-fetch--tool.c Error out when user doesn't have access permission to the repository 2007-11-30 13:10:11 -08:00
builtin-fetch-pack.c Merge branch 'jc/alternate-push' 2008-09-25 09:39:24 -07:00
builtin-fetch.c Start conforming code to "git subcmd" style part 2 2008-09-09 08:41:29 -07:00
builtin-fmt-merge-msg.c Merge branch 'sb/dashless' 2008-07-16 17:22:50 -07:00
builtin-for-each-ref.c Merge branch 'bc/master-diff-hunk-header-fix' 2008-09-29 11:04:20 -07:00
builtin-fsck.c Teach fsck and prune that tmp_obj_ file names may not be 14 bytes long 2008-08-05 21:21:20 -07:00
builtin-gc.c Use "git_config_string" to simplify "builtin-gc.c" code where "prune_expire" is set 2008-09-30 13:41:50 -07:00
builtin-grep.c Merge branch 'nd/worktree' into maint 2008-09-03 15:35:37 -07:00
builtin-help.c builtin-help: fallback to GIT_MAN_VIEWER before man 2008-08-29 21:46:33 -07:00
builtin-http-fetch.c Merge branch 'ho/dashless' 2008-09-09 22:57:35 -07:00
builtin-init-db.c Start conforming code to "git subcmd" style part 3 2008-09-15 23:11:35 -07:00
builtin-log.c Merge branch 'maint' into bc/master-diff-hunk-header-fix 2008-09-29 10:52:34 -07:00
builtin-ls-files.c 'git foo' program identifies itself without dash in die() messages 2008-08-31 09:39:19 -07:00
builtin-ls-remote.c Make usage strings dash-less 2008-07-13 14:12:48 -07:00
builtin-ls-tree.c Add output flushing before fork() 2008-08-04 21:46:42 -07:00
builtin-mailinfo.c mailinfo: avoid violating strbuf assertion 2008-08-19 19:36:56 -07:00
builtin-mailsplit.c Rename path_list to string_list 2008-07-21 19:11:50 -07:00
builtin-merge-base.c merge-base: teach "git merge-base" to drive underlying merge_bases_many() 2008-07-29 23:17:35 -07:00
builtin-merge-file.c merge.conflictstyle: choose between "merge" and "diff3 -m" styles 2008-08-30 19:41:44 -07:00
builtin-merge-ours.c git-merge-ours: make it a builtin. 2007-11-22 14:21:59 -08:00
builtin-merge-recursive.c Merge branch 'maint' into bc/master-diff-hunk-header-fix 2008-09-29 10:52:34 -07:00
builtin-merge.c builtin-commit: use reduce_heads() only when appropriate 2008-10-03 08:18:45 -07:00
builtin-mv.c git-mv: Keep moved index entries inact 2008-07-27 15:05:19 -07:00
builtin-name-rev.c Merge branch 'maint' 2008-08-03 14:14:10 -07:00
builtin-pack-objects.c Merge branch 'maint' 2008-09-23 02:05:35 -07:00
builtin-pack-refs.c Make usage strings dash-less 2008-07-13 14:12:48 -07:00
builtin-prune-packed.c Make usage strings dash-less 2008-07-13 14:12:48 -07:00
builtin-prune.c builtin-prune.c: prune temporary packs in <object_dir>/pack directory 2008-09-23 01:53:07 -07:00
builtin-push.c Make push more verbose about illegal combination of options 2008-08-17 00:24:21 -07:00
builtin-read-tree.c Merge branch 'jc/maint-checkout-keep-remove' into maint 2008-09-18 19:53:22 -07:00
builtin-receive-pack.c push: receiver end advertises refs from alternate repositories 2008-09-09 09:27:46 -07:00
builtin-reflog.c builtin-reflog: Allow reflog expire to name partial ref 2008-08-17 16:24:46 -07:00
builtin-remote.c Merge branch 'mg/maint-remote-fix' into maint 2008-09-29 09:39:53 -07:00
builtin-rerere.c Rename path_list to string_list 2008-07-21 19:11:50 -07:00
builtin-reset.c git-reset: Let -q hush "locally modified" messages 2008-07-25 17:57:22 -07:00
builtin-rev-list.c Start conforming code to "git subcmd" style part 3 2008-09-15 23:11:35 -07:00
builtin-rev-parse.c rev-parse: Add support for the ^! and ^@ syntax 2008-07-27 14:14:01 -07:00
builtin-revert.c cherry-pick/revert: make direct internal call to merge_tree() 2008-09-02 17:03:01 -07:00
builtin-rm.c Use remove_path from dir.c instead of own implementation 2008-09-29 08:37:07 -07:00
builtin-send-pack.c Merge branch 'jc/alternate-push' 2008-09-25 09:39:24 -07:00
builtin-shortlog.c Rename path_list to string_list 2008-07-21 19:11:50 -07:00
builtin-show-branch.c Make usage strings dash-less 2008-07-13 14:12:48 -07:00
builtin-show-ref.c 'git foo' program identifies itself without dash in die() messages 2008-08-31 09:39:19 -07:00
builtin-stripspace.c Clean up stripspace a bit, use strbuf even more. 2007-09-27 00:33:33 -07:00
builtin-symbolic-ref.c Make usage strings dash-less 2008-07-13 14:12:48 -07:00
builtin-tag.c Sync with 1.5.6.5 2008-08-06 13:50:48 -07:00
builtin-tar-tree.c Cosmetical command name fix 2008-09-15 23:11:35 -07:00
builtin-unpack-objects.c fix openssl headers conflicting with custom SHA1 implementations 2008-10-02 18:06:56 -07:00
builtin-update-index.c Merge branch 'bc/maint-diff-hunk-header-fix' into bc/master-diff-hunk-header-fix 2008-09-18 20:32:50 -07:00
builtin-update-ref.c Make usage strings dash-less 2008-07-13 14:12:48 -07:00
builtin-upload-archive.c archive: define MAX_ARGS where it's needed 2008-07-25 17:20:55 -07:00
builtin-verify-pack.c discard revindex data when pack list changes 2008-08-22 22:00:22 -07:00
builtin-verify-tag.c builtin-verify-tag: fix -v option parsing 2008-07-28 23:02:11 -07:00
builtin-write-tree.c Make usage strings dash-less 2008-07-13 14:12:48 -07:00
builtin.h Merge branch 'jc/alternate-push' 2008-09-25 09:39:24 -07:00
bundle.c Teach git-bundle to read revision arguments from stdin like git-rev-list. 2008-07-07 01:31:24 -07:00
bundle.h Move bundle specific stuff into bundle.[ch] 2007-09-19 03:22:30 -07:00
cache-tree.c cache-tree.c: make cache_tree_find() static 2008-07-16 08:50:27 -07:00
cache-tree.h cache-tree.c: make cache_tree_find() static 2008-07-16 08:50:27 -07:00
cache.h fix openssl headers conflicting with custom SHA1 implementations 2008-10-02 18:06:56 -07:00
check_bindir Move all dashed-form commands to libexecdir 2008-06-19 16:00:38 -07:00
check-builtins.sh
check-racy.c ce_match_stat, run_diff_files: use symbolic constants for readability 2007-11-10 00:24:51 -08:00
color.c Provide git_config with a callback-data parameter 2008-05-14 12:34:44 -07:00
color.h Provide git_config with a callback-data parameter 2008-05-14 12:34:44 -07:00
combine-diff.c Merge branch 'bc/maint-diff-hunk-header-fix' into bc/master-diff-hunk-header-fix 2008-09-18 20:32:50 -07:00
command-list.txt Officially deprecate repo-config. 2008-01-17 22:52:40 -08:00
commit.c commit.c: make read_graft_file() static 2008-10-02 18:03:35 -07:00
commit.h commit.c: make read_graft_file() static 2008-10-02 18:03:35 -07:00
config.c config.c: make git_parse_long() static 2008-10-02 18:03:35 -07:00
config.mak.in Merge branch 'jc/cc-ld-dynpath' 2008-09-07 23:45:56 -07:00
configure.ac configure: auto detect dynamic library path switches 2008-08-17 17:42:02 -07:00
connect.c push: prepare sender to receive extended ref information from the receiver 2008-09-09 09:27:46 -07:00
convert.c Fixed text file auto-detection: treat EOF character 032 at the end of file as printable 2008-07-11 21:14:27 -07:00
copy.c copy.c: copy_fd - correctly report write errors 2008-04-22 21:21:08 -07:00
COPYING
csum-file.c fix openssl headers conflicting with custom SHA1 implementations 2008-10-02 18:06:56 -07:00
csum-file.h fix openssl headers conflicting with custom SHA1 implementations 2008-10-02 18:06:56 -07:00
ctype.c dir.c: Avoid c99 array initialization 2008-08-28 21:49:51 -07:00
daemon.c Merge branch 'jc/alternate-push' 2008-09-25 09:39:24 -07:00
date.c Make my_mktime() public and rename it to tm_to_time_t() 2008-06-23 13:40:29 +02:00
decorate.c decorate: allow const objects to be decorated 2008-08-20 13:30:49 -07:00
decorate.h decorate: allow const objects to be decorated 2008-08-20 13:30:49 -07:00
delta.h Support fetching the memory usage of a delta index 2007-07-12 14:32:35 -07:00
diff-delta.c fix style of a few comments in diff-delta.c 2007-12-18 15:22:28 -08:00
diff-lib.c diff: vary default prefix depending on what are compared 2008-08-30 20:53:24 -07:00
diff-no-index.c diff: vary default prefix depending on what are compared 2008-08-30 20:53:24 -07:00
diff.c fix openssl headers conflicting with custom SHA1 implementations 2008-10-02 18:06:56 -07:00
diff.h Merge branch 'ho/dirstat-by-file' 2008-09-25 08:41:42 -07:00
diffcore-break.c rename: Break filepairs with different types. 2007-12-02 02:24:46 -08:00
diffcore-delta.c optimize diffcore-delta by sorting hash entries. 2007-10-04 00:05:36 -07:00
diffcore-order.c Use xmemdupz() in many places. 2007-09-18 17:42:17 -07:00
diffcore-pickaxe.c War on whitespace 2007-06-07 00:04:01 -07:00
diffcore-rename.c diff: make "too many files" rename warning optional 2008-05-03 13:40:43 -07:00
diffcore.h Bust the ghost of long-defunct diffcore-pathspec. 2008-09-19 19:48:30 -07:00
dir.c dir.c: make dir_add_name() and dir_add_ignored() static 2008-10-02 17:46:09 -07:00
dir.h dir.c: make dir_add_name() and dir_add_ignored() static 2008-10-02 17:46:09 -07:00
dump-cache-tree.c
editor.c editor.c: Libify launch_editor() 2008-07-25 17:09:38 -07:00
entry.c 'git foo' program identifies itself without dash in die() messages 2008-08-31 09:39:19 -07:00
environment.c Make use of stat.ctime configurable 2008-07-28 23:26:25 -07:00
exec_cmd.c Refactor, adding prepare_git_cmd(const char **argv) 2008-07-28 23:02:11 -07:00
exec_cmd.h Refactor, adding prepare_git_cmd(const char **argv) 2008-07-28 23:02:11 -07:00
fast-import.c fix openssl headers conflicting with custom SHA1 implementations 2008-10-02 18:06:56 -07:00
fetch-pack.h Teach fetch-pack/upload-pack about --include-tag 2008-03-04 23:28:14 -08:00
fixup-builtins make remove-dashes: apply to scripts and programs as well, not just to builtins 2008-07-11 21:13:17 -07:00
fsck.c fsck.c: fix bogus "empty tree" check 2008-03-05 10:32:01 -08:00
fsck.h add common fsck error printing function 2008-02-25 23:57:35 -08:00
generate-cmdlist.sh Consolidate command list to one. 2007-12-01 23:48:28 -08:00
git-add--interactive.perl Make git-add -i accept ranges like 7- 2008-08-01 23:26:40 -07:00
git-am.sh git-am: ignore --binary option 2008-08-16 02:32:36 -07:00
git-archimport.perl Make usage strings dash-less 2008-07-13 14:12:48 -07:00
git-bisect.sh bisect: remove "checkout_done" variable used when checking merge bases 2008-09-05 22:31:43 -07:00
git-compat-util.h usage.c: remove unused functions 2008-09-29 07:30:16 -07:00
git-cvsexportcommit.perl Make usage strings dash-less 2008-07-13 14:12:48 -07:00
git-cvsimport.perl Merge branch 'maint' 2008-08-05 21:21:08 -07:00
git-cvsserver.perl cvsserver: Add cvs co -c support 2008-07-19 11:17:43 -07:00
git-filter-branch.sh Merge branch 'tr/filter-branch' 2008-09-02 17:47:13 -07:00
git-instaweb.sh Make usage strings dash-less 2008-07-13 14:12:48 -07:00
git-lost-found.sh Merge branch 'ph/parseopt-sh' 2007-11-17 21:39:37 -08:00
git-merge-octopus.sh git-merge-octopus: use (merge-base A (merge B C D E...)) for stepwise merge 2008-07-30 00:20:51 -07:00
git-merge-one-file.sh git-merge-one-file: fix longstanding stupid thinko 2008-03-18 22:17:17 -07:00
git-merge-resolve.sh Fixing comment in merge strategies 2007-08-30 17:18:22 -07:00
git-mergetool.sh Remove the use of '--' in merge program invocation 2008-06-19 14:13:55 -07:00
git-parse-remote.sh Rewrite "git-frotz" to "git frotz" 2007-07-02 22:52:14 -07:00
git-pull.sh Ignore dirty submodule states in "git pull --rebase" 2008-07-23 11:36:56 -07:00
git-quiltimport.sh Rename .git/rebase to .git/rebase-apply 2008-07-21 18:51:47 -07:00
git-rebase--interactive.sh git-rebase--interactive: auto amend only edited commit 2008-09-09 08:57:21 -07:00
git-rebase.sh Improve error output of git-rebase 2008-08-16 23:21:18 -07:00
git-relink.perl Make usage strings dash-less 2008-07-13 14:12:48 -07:00
git-repack.sh git-repack uses --no-repack-object, not --no-repack-delta. 2008-09-19 22:23:14 -07:00
git-request-pull.sh git-request-pull: replace call to deprecated peek-remote 2008-07-13 16:08:27 -07:00
git-send-email.perl Merge branch 'maint' 2008-07-25 13:56:36 -07:00
git-sh-setup.sh Make usage strings dash-less 2008-07-13 14:12:48 -07:00
git-stash.sh Clarify how the user can satisfy stash's 'dirty state' check. 2008-09-29 08:13:10 -07:00
git-submodule.sh Merge branch 'bc/master-diff-hunk-header-fix' 2008-09-29 11:04:20 -07:00
git-svn.perl Merge branch 'maint' 2008-09-30 14:14:09 -07:00
GIT-VERSION-GEN GIT 1.6.0.2 2008-09-12 16:18:47 -07:00
git-web--browse.sh git-web--browse: Support for using /bin/start on MinGW 2008-09-24 15:49:21 -07:00
git.c Merge branch 'jc/alternate-push' 2008-09-25 09:39:24 -07:00
git.spec.in Update RPM spec for the new location of git-cvsserver. 2008-09-15 21:03:59 -07:00
graph.c graph.c: make many functions static 2008-09-25 08:00:28 -07:00
graph.h graph.c: make many functions static 2008-09-25 08:00:28 -07:00
grep.c log --author/--committer: really match only with name part 2008-09-04 22:21:56 -07:00
grep.h log --author/--committer: really match only with name part 2008-09-04 22:21:56 -07:00
hash-object.c add --no-filters option to git hash-object 2008-08-03 13:38:22 -07:00
hash.c Add 'const' where appropriate to index handling functions 2008-03-09 00:43:48 -08:00
hash.h Add 'const' where appropriate to index handling functions 2008-03-09 00:43:48 -08:00
help.c git wrapper: also use aliases to correct mistyped commands 2008-09-11 23:05:39 -07:00
help.h Merge branch 'ar/autospell' 2008-09-07 23:52:16 -07:00
http-push.c fix openssl headers conflicting with custom SHA1 implementations 2008-10-02 18:06:56 -07:00
http-walker.c fix openssl headers conflicting with custom SHA1 implementations 2008-10-02 18:06:56 -07:00
http.c Merge branch 'mh/maint-honor-no-ssl-verify' 2008-09-16 00:46:36 -07:00
http.h Work around gcc warnings from curl headers 2008-07-04 00:37:40 -07:00
ident.c Replace uses of "git-var" with "git var" 2008-07-30 11:42:01 -07:00
imap-send.c imap-send.c: more style fixes 2008-07-25 21:51:30 -07:00
index-pack.c fix openssl headers conflicting with custom SHA1 implementations 2008-10-02 18:06:56 -07:00
INSTALL separate build targets for man and html documentation 2008-09-10 15:41:51 -07:00
interpolate.c Avoid unnecessary "if-before-free" tests. 2008-02-22 14:14:40 -08:00
interpolate.h Lift 16kB limit of log message output 2007-06-13 00:41:21 -07:00
levenshtein.c git wrapper: DWIM mistyped commands 2008-08-31 10:14:58 -07:00
levenshtein.h git wrapper: DWIM mistyped commands 2008-08-31 10:14:58 -07:00
list-objects.c list-objects.c::process_tree/blob: check for NULL 2008-02-18 19:25:26 -08:00
list-objects.h
ll-merge.c git-merge-recursive: learn to honor merge.conflictstyle 2008-08-30 19:41:44 -07:00
ll-merge.h merge-recursive: split low-level merge functions out. 2008-02-18 00:46:13 -08:00
lockfile.c rollback lock files on more signals than just SIGINT 2008-05-31 14:33:59 -07:00
log-tree.c move load_ref_decorations() to log-tree.c and export it 2008-09-04 17:01:41 -07:00
log-tree.h move load_ref_decorations() to log-tree.c and export it 2008-09-04 17:01:41 -07:00
mailmap.c Rename path_list to string_list 2008-07-21 19:11:50 -07:00
mailmap.h Rename path_list to string_list 2008-07-21 19:11:50 -07:00
Makefile Merge branch 'maint' 2008-10-02 18:16:22 -07:00
match-trees.c Improved const correctness for strings 2007-10-21 01:43:27 -04:00
merge-file.c xdl_diff: identify call sites. 2007-12-13 23:04:26 -08:00
merge-index.c 'git foo' program identifies itself without dash in die() messages 2008-08-31 09:39:19 -07:00
merge-recursive.c Merge branch 'bc/master-diff-hunk-header-fix' 2008-09-29 11:04:20 -07:00
merge-recursive.h merge-recursive: move current_{file,directory}_set to struct merge_options 2008-09-04 22:50:43 -07:00
merge-tree.c Make 'traverse_trees()' traverse conflicting DF entries in parallel 2008-03-09 00:43:47 -08:00
mktag.c mktag.c: tweak validation of tagger field and adjust test script 2008-03-31 22:43:34 -07:00
mktree.c Rework unquote_c_style to work on a strbuf. 2007-09-20 23:32:18 -07:00
name-hash.c Make hash_name_lookup able to do case-independent lookups 2008-04-09 01:22:25 -07:00
object.c parse_object_buffer: don't ignore errors from the object specific parsing functions 2008-02-03 16:04:57 -08:00
object.h Fix git-diff-tree --stdin 2008-09-10 15:00:17 -07:00
pack-check.c fix openssl headers conflicting with custom SHA1 implementations 2008-10-02 18:06:56 -07:00
pack-redundant.c Make usage strings dash-less 2008-07-13 14:12:48 -07:00
pack-refs.c Move pack_refs() and friends into libgit 2008-06-19 15:53:13 -07:00
pack-refs.h Move pack_refs() and friends into libgit 2008-06-19 15:53:13 -07:00
pack-revindex.c discard revindex data when pack list changes 2008-08-22 22:00:22 -07:00
pack-revindex.h discard revindex data when pack list changes 2008-08-22 22:00:22 -07:00
pack-write.c fix openssl headers conflicting with custom SHA1 implementations 2008-10-02 18:06:56 -07:00
pack.h improve reliability of fixup_pack_header_footer() 2008-08-29 21:51:27 -07:00
pager.c spawn pager via run_command interface 2008-07-25 21:29:44 -07:00
parse-options.c Sync with 1.5.6.5 2008-08-06 13:50:48 -07:00
parse-options.h Sync with 1.5.6.5 2008-08-06 13:50:48 -07:00
patch-delta.c
patch-id.c fix openssl headers conflicting with custom SHA1 implementations 2008-10-02 18:06:56 -07:00
patch-ids.c Make the diff_options bitfields be an unsigned with explicit masks. 2007-11-11 16:54:15 -08:00
patch-ids.h Refactor patch-id filtering out of git-cherry and git-format-patch. 2007-04-11 20:02:03 -07:00
path.c Fix typo in comments of longest_ancestor_length() 2008-08-11 16:44:54 -07:00
pkt-line.c Cleanup xread() loops to use read_in_full() 2008-05-03 22:15:25 -07:00
pkt-line.h
pretty.c add '%d' pretty format specifier to show decoration 2008-09-04 17:01:41 -07:00
progress.c progress.c: avoid use of dynamic-sized array 2008-06-08 13:56:32 -07:00
progress.h nicer display of thin pack completion 2007-11-08 15:43:41 -08:00
quote.c shrink git-shell by avoiding redundant dependencies 2008-06-27 23:22:00 -07:00
quote.h Make private quote_path() in wt-status.c available as quote_path_relative() 2008-03-07 21:22:25 -08:00
reachable.c Merge branch 'mk/maint-parse-careful' 2008-02-18 20:56:01 -08:00
reachable.h Move traversal of reachable objects into a separate library. 2007-01-06 22:57:34 -08:00
read-cache.c fix openssl headers conflicting with custom SHA1 implementations 2008-10-02 18:06:56 -07:00
README Update README to point at a few key periodical messages to the list 2007-03-25 17:42:32 -07:00
reflog-walk.c Rename path_list to string_list 2008-07-21 19:11:50 -07:00
reflog-walk.h git log -g: Complain, but do not fail, when no reflogs are there 2007-07-24 17:28:10 -07:00
refs.c refs: improve comments about "reading" argument of "resolve_ref" 2008-09-09 08:34:00 -07:00
refs.h Allow for having for_each_ref() list extra refs 2008-05-04 17:41:44 -07:00
RelNotes Start draft release notes for 1.6.0.3 2008-09-19 23:15:13 -07:00
remote.c remote.c: make free_ref(), parse_push_refspec() and free_refspecs() static. 2008-09-25 08:00:28 -07:00
remote.h remote.c: make free_ref(), parse_push_refspec() and free_refspecs() static. 2008-09-25 08:00:28 -07:00
rerere.c fix openssl headers conflicting with custom SHA1 implementations 2008-10-02 18:06:56 -07:00
rerere.h Rename path_list to string_list 2008-07-21 19:11:50 -07:00
revision.c Merge branch 'tr/rev-list-reverse' 2008-09-18 20:18:37 -07:00
revision.h Merge branch 'tr/rev-list-reverse' 2008-09-18 20:18:37 -07:00
run-command.c run-command.c: remove run_command_v_opt_cd() 2008-10-02 18:02:44 -07:00
run-command.h run-command.c: remove run_command_v_opt_cd() 2008-10-02 18:02:44 -07:00
send-pack.h Teach send-pack a mirror mode 2007-11-09 21:14:10 -08:00
server-info.c Don't access line[-1] for a zero-length "line" from fgets. 2008-01-04 12:28:58 -08:00
setup.c setup_git_directory(): fix move to worktree toplevel directory 2008-08-30 23:41:12 -07:00
sha1_file.c fix openssl headers conflicting with custom SHA1 implementations 2008-10-02 18:06:56 -07:00
sha1_name.c Make reflog query '@{1219188291}' act as '@{2008.8.19.16:24:51.-0700}' 2008-08-21 23:30:17 -07:00
sha1-lookup.c sha1-lookup: make selection of 'middle' less aggressive 2008-04-09 01:30:18 -07:00
sha1-lookup.h sha1-lookup: more memory efficient search in sorted list of SHA-1 2008-04-09 01:23:52 -07:00
shallow.c Merge branch 'mk/maint-parse-careful' 2008-02-18 20:56:01 -08:00
shell.c shell: do not play duplicated definition games to shrink the executable 2008-08-29 22:38:41 -07:00
shortlog.h Rename path_list to string_list 2008-07-21 19:11:50 -07:00
show-index.c Fix some warnings (on cygwin) to allow -Werror 2008-07-05 17:26:29 -07:00
sideband.c improve handling of sideband message display 2008-09-03 14:51:10 -07:00
sideband.h
strbuf.c Add some useful functions for strbuf manipulation. 2008-07-13 14:04:04 -07:00
strbuf.h editor.c: Libify launch_editor() 2008-07-25 17:09:38 -07:00
string-list.c Rename path_list to string_list 2008-07-21 19:11:50 -07:00
string-list.h Rename path_list to string_list 2008-07-21 19:11:50 -07:00
symlinks.c Optimize symlink/directory detection 2008-05-10 18:16:31 -07:00
tag.c Merge branch 'mk/maint-parse-careful' 2008-03-02 15:11:07 -08:00
tag.h
tar.h
test-chmtime.c Add test-chmtime: a utility to change mtime on files 2007-02-25 11:09:56 -08:00
test-date.c
test-delta.c Fix compilation of test-delta 2007-05-01 02:59:08 -07:00
test-genrandom.c simple random data generator for tests 2007-04-11 19:23:32 -07:00
test-match-trees.c A new merge stragety 'subtree'. 2007-04-07 02:29:40 -07:00
test-parse-options.c test-parse-options: use appropriate cast in length_callback 2008-08-13 18:11:44 -07:00
test-path-utils.c Add support for GIT_CEILING_DIRECTORIES 2008-05-23 14:15:01 -07:00
test-sha1.c fix openssl headers conflicting with custom SHA1 implementations 2008-10-02 18:06:56 -07:00
test-sha1.sh more tr portability test script fixes 2008-03-13 00:57:52 -07:00
thread-utils.c pack-objects: Add runtime detection of online CPU's 2008-02-23 12:00:32 -08:00
thread-utils.h pack-objects: Add runtime detection of online CPU's 2008-02-23 12:00:32 -08:00
trace.c Trace and quote with argv: get rid of unneeded count argument. 2007-12-03 22:11:53 -08:00
transport.c push: prepare sender to receive extended ref information from the receiver 2008-09-09 09:27:46 -07:00
transport.h Mark the list of refs to fetch as const 2008-05-04 17:41:44 -07:00
tree-diff.c 'git foo' program identifies itself without dash in die() messages 2008-08-31 09:39:19 -07:00
tree-walk.c Fix tree-walking compare_entry() in the presense of --prefix 2008-03-09 00:43:47 -08:00
tree-walk.h Make 'traverse_trees()' traverse conflicting DF entries in parallel 2008-03-09 00:43:47 -08:00
tree.c add context pointer to read_tree_recursive() 2008-07-15 07:17:59 -07:00
tree.h add context pointer to read_tree_recursive() 2008-07-15 07:17:59 -07:00
unpack-file.c Provide git_config with a callback-data parameter 2008-05-14 12:34:44 -07:00
unpack-trees.c checkout: do not lose staged removal 2008-09-09 22:55:22 -07:00
unpack-trees.h checkout: do not lose staged removal 2008-09-09 22:55:22 -07:00
update-server-info.c Make usage strings dash-less 2008-07-13 14:12:48 -07:00
upload-pack.c 'git foo' program identifies itself without dash in die() messages 2008-08-31 09:39:19 -07:00
usage.c usage.c: remove unused functions 2008-09-29 07:30:16 -07:00
utf8.c utf8_width(): allow non NUL-terminated input 2008-01-06 20:53:46 -08:00
utf8.h utf8_width(): allow non NUL-terminated input 2008-01-06 20:53:46 -08:00
var.c Replace uses of "git-var" with "git var" 2008-07-30 11:42:01 -07:00
walker.c Fix "git clone http://$URL" to check out the worktree when asked 2008-06-04 13:33:25 -07:00
walker.h Make walker.fetch_ref() take a struct ref. 2008-04-26 17:36:17 -07:00
wrapper.c Move read_in_full() and write_in_full() to wrapper.c 2008-07-20 17:17:09 -07:00
write_or_die.c Move read_in_full() and write_in_full() to wrapper.c 2008-07-20 17:17:09 -07:00
ws.c Teach "diff --check" about new blank lines at end 2008-06-26 22:07:26 -07:00
wt-status.c wt-status: Teach how to discard changes in the working directory 2008-09-07 16:12:20 -07:00
wt-status.h Add argument 'no' commit/status option -u|--untracked-files 2008-06-09 15:48:19 -07:00
xdiff-interface.c Merge branch 'bc/master-diff-hunk-header-fix' 2008-09-29 11:04:20 -07:00
xdiff-interface.h Merge branch 'bc/master-diff-hunk-header-fix' 2008-09-29 11:04:20 -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.
It was originally written by Linus Torvalds with help of a group of
hackers around the net. It is currently maintained by Junio C Hamano.

Please read the file INSTALL for installation instructions.
See Documentation/tutorial.txt to get started, then see
Documentation/everyday.txt for a useful minimum set of commands,
and "man git-commandname" for documentation of each command.
CVS users may also want to read Documentation/cvs-migration.txt.

Many Git online resources are accessible from http://git.or.cz/
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. 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://marc.theaimsgroup.com/?l=git and other archival sites.

The messages titled "A note from the maintainer", "What's in
git.git (stable)" and "What's cooking in git.git (topics)" and
the discussion following them on the mailing list give a good
reference for project status, development direction and
remaining tasks.