1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-11-08 10:13:18 +01:00
Find a file
Junio C Hamano c5dc9a2829 git-merge-octopus: use (merge-base A (merge B C D E...)) for stepwise merge
Suppose you have this topology, and you are trying to make an octopus
across A, B and C (you are at C and merging A and B into your branch).
The protoccol between "git merge" and merge strategies is for the former
to pass common ancestor(s), '--' and then commits being merged.

git-merge-octopus does not produce the final merge in one-go.  It
iteratively produces pairwise merges.  So the first step might be to come
up with a merge between B and C:

               o---o---o---o---C
              /                 :
             /   o---o---o---B..(M)
            /   /
        ---1---2---o---o---o---A

and for that, "1" is used as the merge base, not because it is the base
across A, B and C but because it is the base between B and C.  For this
merge, A does not matter.

I drew M in parentheses and lines between B and C to it in dotted line
because we actually do _not_ create a real commit --- the only thing we
need is a tree object, in order to proceed to the next step.

Then the final merge result is obtained by merging tree of (M) and A using
their common ancestor.  For that, we _could_ still use "1" as the merge
base.

But if you imagine a case where you started from A and M, you would _not_
pick "1" as the merge base; you would rather use "2" which is a better
base for this merge.

That is why git-merge-octopus ignores the merge base given by "merge" but
computes its own.

The comment at the end of git-merge-octopus talks about "merge reference
commit", that we used to update it to common found in this round, and that
that updating was pointless.  After the first round of merge to produce
the tree for M (but without actually creating the commit object M itself),
in order to figure out the merge base used to merge that with A in the
second round, we used to use A and "1" (which was merge base between B and
C).  That was pointless --- "merge-base A 1" is guaranteed to give a base
that is no better than either "merge-base A B" or "merge-base A C".  So
the current code keeps using the original head (iow, MRC=C, because in
this case we are starting from C and merging B and then A into it).

This trickerly was necessary only because we avoided creating the extra
merge commit object M.

	Side note.  An alternative implementation could have been to
	actually record it as a real merge commit M, and then let the
	two-commit merge-base compute the base between A and M when
	merging A to the result of the previous round, but we avoided
	creating M, at the expense of potentially using suboptimal base in
	the later rounds.

But we do not have to be that pessimistic.  We can instead accumulate the
commits we have merged so far in MRC, and have merge_bases_many() compute
the merge base for the new head being merged and the heads we have
processed so far, which can give a better base than what we currently do.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-07-30 00:20:51 -07:00
arm
compat Windows: Make sure argv[0] has a path 2008-07-25 17:41:13 -07:00
contrib bash completion: Add completion for 'git help' 2008-07-27 14:14:01 -07:00
Documentation documentation: merge-base: explain "git merge-base" with more than 2 args 2008-07-29 23:17:35 -07:00
git-gui Merge git://repo.or.cz/git-gui 2008-07-27 14:09:25 -07:00
gitk-git Merge git://git.kernel.org/pub/scm/gitk/gitk 2008-06-11 16:22:53 -07:00
gitweb gitweb: More about how gitweb gets 'owner' of repository 2008-07-27 14:14:01 -07:00
mozilla-sha1
perl perl/Makefile: update NO_PERL_MAKEMAKER section 2008-07-25 00:08:56 -07:00
ppc
t merge-base-many: add trivial tests based on the documentation 2008-07-29 23:51:41 -07:00
templates Merge branch 'j6t/mingw' 2008-07-02 21:57:52 -07:00
xdiff
.gitattributes
.gitignore Merge branch 'dr/ceiling' 2008-07-07 02:17:23 -07:00
.mailmap .mailmap update 2008-07-19 11:25:51 -07:00
abspath.c Allow add_path() to add non-existent directories to the path 2008-07-25 17:41:13 -07:00
alias.c Move split_cmdline() to alias.c 2008-06-30 22:45:50 -07:00
alloc.c
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: declare struct archiver where it's needed 2008-07-25 17:21:04 -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
base85.c
blob.c
blob.h
branch.c Move MERGE_RR from .git/rr-cache/ into .git/ 2008-07-13 01:03:10 -07:00
branch.h
builtin-add.c Merge branch 'jc/add-addremove' 2008-07-20 17:53:17 -07:00
builtin-annotate.c
builtin-apply.c Rename path_list to string_list 2008-07-21 19:11:50 -07:00
builtin-archive.c archive: allow --exec and --remote without equal sign 2008-07-25 17:28:40 -07:00
builtin-blame.c Rename path_list to string_list 2008-07-21 19:11:50 -07:00
builtin-branch.c builtin-branch: fix -v for --[no-]merged 2008-07-27 14:14:01 -07:00
builtin-bundle.c Always set *nongit_ok in setup_git_directory_gently() 2008-03-26 15:41:35 -07:00
builtin-cat-file.c Make usage strings dash-less 2008-07-13 14:12: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
builtin-checkout-index.c Make usage strings dash-less 2008-07-13 14:12:48 -07:00
builtin-checkout.c git-checkout: improve error messages, detect ambiguities. 2008-07-24 23:24:00 -07:00
builtin-clean.c Make usage strings dash-less 2008-07-13 14:12:48 -07:00
builtin-clone.c Propagate -u/--upload-pack option of "git clone" to transport. 2008-07-25 17:10:14 -07:00
builtin-commit-tree.c git-commit-tree: make it usable from other builtins 2008-07-06 19:23:00 -07:00
builtin-commit.c editor.c: Libify launch_editor() 2008-07-25 17:09:38 -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 Make usage strings dash-less 2008-07-13 14:12:48 -07:00
builtin-describe.c Merge branch 'sb/dashless' 2008-07-16 17:22:50 -07:00
builtin-diff-files.c Make usage strings dash-less 2008-07-13 14:12:48 -07:00
builtin-diff-index.c Make usage strings dash-less 2008-07-13 14:12:48 -07:00
builtin-diff-tree.c Make usage strings dash-less 2008-07-13 14:12:48 -07:00
builtin-diff.c Allow pager of diff command be enabled/disabled 2008-07-23 11:14:47 -07:00
builtin-fast-export.c Rename path_list to string_list 2008-07-21 19:11:50 -07:00
builtin-fetch--tool.c
builtin-fetch-pack.c git fetch-pack: do not complain about "no common commits" in an empty repo 2008-07-16 15:53:43 -07:00
builtin-fetch.c Rename path_list to string_list 2008-07-21 19:11:50 -07:00
builtin-fmt-merge-msg.c Merge branch 'sb/dashless' 2008-07-16 17:22:50 -07:00
builtin-for-each-ref.c Make non-static functions, that may be static, static 2008-07-23 18:38:14 -07:00
builtin-fsck.c fsck: Don't require tmp_obj_ file names are 14 bytes in length 2008-07-27 14:49:26 -07:00
builtin-gc.c Make usage strings dash-less 2008-07-13 14:12:48 -07:00
builtin-grep.c Merge branch 'maint' 2008-07-20 17:16:29 -07:00
builtin-http-fetch.c Provide git_config with a callback-data parameter 2008-05-14 12:34:44 -07:00
builtin-init-db.c init: handle empty "template" parameter 2008-07-27 23:14:03 -07:00
builtin-log.c Merge branch 'sb/dashless' 2008-07-16 17:22:50 -07:00
builtin-ls-files.c Make usage strings dash-less 2008-07-13 14:12:48 -07:00
builtin-ls-remote.c Make usage strings dash-less 2008-07-13 14:12:48 -07:00
builtin-ls-tree.c Merge branch 'sb/dashless' 2008-07-16 17:22:50 -07:00
builtin-mailinfo.c mailinfo: better parse email adresses containg parentheses 2008-07-21 20:09:12 -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 branch 'maint' 2008-03-14 00:16:42 -07:00
builtin-merge-ours.c
builtin-merge-recursive.c Rename path_list to string_list 2008-07-21 19:11:50 -07:00
builtin-merge.c Make non-static functions, that may be static, static 2008-07-23 18:38:14 -07:00
builtin-mv.c git-mv: Keep moved index entries inact 2008-07-27 15:05:19 -07:00
builtin-name-rev.c Make usage strings dash-less 2008-07-13 14:12:48 -07:00
builtin-pack-objects.c Fix some warnings (on cygwin) to allow -Werror 2008-07-05 17:26:29 -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 Teach fsck and prune about the new location of temporary objects 2008-07-24 23:08:07 -07:00
builtin-push.c builtin-push.c: Cleanup - use OPT_BIT() and remove some variables 2008-07-20 14:41:49 -07:00
builtin-read-tree.c Move read_cache_unmerged() to read-cache.c 2008-06-30 22:45:51 -07:00
builtin-reflog.c Make usage strings dash-less 2008-07-13 14:12:48 -07:00
builtin-remote.c Rename path_list to string_list 2008-07-21 19:11:50 -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 Merge branch 'maint' 2008-07-19 11:28:06 -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 Merge branch 'sb/dashless' 2008-07-16 17:22:50 -07:00
builtin-rm.c Merge branch 'maint' 2008-07-19 11:28:06 -07:00
builtin-send-pack.c Make usage strings dash-less 2008-07-13 14:12:48 -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 Rename path_list to string_list 2008-07-21 19:11:50 -07:00
builtin-stripspace.c
builtin-symbolic-ref.c Make usage strings dash-less 2008-07-13 14:12:48 -07:00
builtin-tag.c editor.c: Libify launch_editor() 2008-07-25 17:09:38 -07:00
builtin-tar-tree.c Make usage strings dash-less 2008-07-13 14:12:48 -07:00
builtin-unpack-objects.c Fix some warnings (on cygwin) to allow -Werror 2008-07-05 17:26:29 -07:00
builtin-update-index.c Make usage strings dash-less 2008-07-13 14:12:48 -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 Fix some warnings (on cygwin) to allow -Werror 2008-07-05 17:26:29 -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 Allow pager of diff command be enabled/disabled 2008-07-23 11:14:47 -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
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 Make use of stat.ctime configurable 2008-07-28 23:26:25 -07:00
check-builtins.sh
check-racy.c
check_bindir Move all dashed-form commands to libexecdir 2008-06-19 16:00:38 -07: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 'jc/maint-combine-diff-pre-context' into maint 2008-06-25 11:20:01 -07:00
command-list.txt
commit.c sort_in_topological_order(): avoid setting a commit flag 2008-07-23 12:00:21 -07:00
commit.h merge-base: teach "git merge-base" to drive underlying merge_bases_many() 2008-07-29 23:17:35 -07:00
config.c Make use of stat.ctime configurable 2008-07-28 23:26:25 -07:00
config.mak.in Move all dashed-form commands to libexecdir 2008-06-19 16:00:38 -07:00
configure.ac Consistency: Use "libcurl" instead of "cURL library" and "curl" 2008-06-15 13:35:10 -07:00
connect.c Windows: Disambiguate DOS style paths from SSH URLs. 2008-06-26 08:45:08 +02: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 Make pack creation always fsync() the result 2008-05-31 14:46:57 -07:00
csum-file.h Make pack creation always fsync() the result 2008-05-31 14:46:57 -07:00
ctype.c
daemon.c git daemon: avoid waking up too often 2008-07-23 16:57:14 -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 fast-export --export-marks: fix off by one error 2008-07-03 00:34:59 -07:00
decorate.h
delta.h
diff-delta.c
diff-lib.c Fix buffer overflow in git diff 2008-07-16 14:03:24 -07:00
diff-no-index.c Rename path_list to string_list 2008-07-21 19:11:50 -07:00
diff.c Merge branch 'maint' 2008-07-16 17:10:28 -07:00
diff.h Fix buffer overflow in git diff 2008-07-16 14:03:24 -07:00
diffcore-break.c
diffcore-delta.c
diffcore-order.c
diffcore-pickaxe.c
diffcore-rename.c diff: make "too many files" rename warning optional 2008-05-03 13:40:43 -07:00
diffcore.h
dir.c Merge branch 'lt/case-insensitive' 2008-05-10 18:14:28 -07:00
dir.h
dump-cache-tree.c
editor.c editor.c: Libify launch_editor() 2008-07-25 17:09:38 -07:00
entry.c Fix possible Solaris problem in 'checkout_entry()' 2008-03-18 22:18:57 -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 Support gitlinks in fast-import. 2008-07-19 11:25:51 -07:00
fetch-pack.h
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.h
generate-cmdlist.sh
git-add--interactive.perl Merge branch 'sp/win' 2008-07-15 18:59:45 -07:00
git-am.sh git-am: Mention --abort in usage string part of OPTIONS_SPEC 2008-07-25 17:10:20 -07:00
git-archimport.perl Make usage strings dash-less 2008-07-13 14:12:48 -07:00
git-bisect.sh git-bisect: use dash-less form on git bisect log 2008-07-11 21:13:16 -07:00
git-compat-util.h Merge branch 'mv/merge-in-c' 2008-07-15 19:09:46 -07:00
git-cvsexportcommit.perl Make usage strings dash-less 2008-07-13 14:12:48 -07:00
git-cvsimport.perl Make usage strings dash-less 2008-07-13 14:12:48 -07:00
git-cvsserver.perl cvsserver: Add cvs co -c support 2008-07-19 11:17:43 -07:00
git-filter-branch.sh git-filter-branch.sh: Allow running in bare repositories 2008-07-23 16:57:04 -07:00
git-instaweb.sh Make usage strings dash-less 2008-07-13 14:12:48 -07:00
git-lost-found.sh
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
git-mergetool.sh Remove the use of '--' in merge program invocation 2008-06-19 14:13:55 -07:00
git-parse-remote.sh
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 rebase -i: When an 'edit' stops, mention the commit 2008-07-23 12:02:57 -07:00
git-rebase.sh Rename .git/rebase to .git/rebase-apply 2008-07-21 18:51:47 -07:00
git-relink.perl Make usage strings dash-less 2008-07-13 14:12:48 -07:00
git-repack.sh Make usage strings dash-less 2008-07-13 14:12:48 -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 stash save: fix parameter handling 2008-07-23 16:57:03 -07:00
git-submodule.sh git-submodule: move ill placed shift. 2008-07-21 22:36:29 -07:00
git-svn.perl git-svn: teach dcommit about svn auto-props 2008-07-25 17:54:19 -07:00
GIT-VERSION-GEN GIT-VERSION-GEN: do not fail if a 'HEAD' file exists in the working copy 2008-06-28 10:53:11 -07:00
git-web--browse.sh web--browse: use custom commands defined at config time 2008-03-14 00:31:06 -07:00
git.c Record the command invocation path early 2008-07-25 17:41:13 -07:00
git.spec.in Move all dashed-form commands to libexecdir 2008-06-19 16:00:38 -07:00
graph.c git log --graph: print '*' for all commits, including merges 2008-06-06 11:56:43 -07:00
graph.h log --graph --left-right: show left/right information in place of '*' 2008-05-25 12:06:52 -07:00
grep.c
grep.h
hash-object.c Make usage strings dash-less 2008-07-13 14:12:48 -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 Avoid chdir() in list_commands_in_dir() 2008-07-27 14:14:38 -07:00
http-push.c Make usage strings dash-less 2008-07-13 14:12:48 -07:00
http-walker.c Merge branch 'maint' 2008-07-19 11:28:06 -07:00
http.c http.c: Use 'git_config_string' to clean up SSL config. 2008-07-05 17:42:46 -07:00
http.h Work around gcc warnings from curl headers 2008-07-04 00:37:40 -07:00
ident.c commit: Show committer if automatic 2008-05-06 16:50:17 -07:00
imap-send.c Provide git_config with a callback-data parameter 2008-05-14 12:34:44 -07:00
index-pack.c Merge branch 'maint' 2008-07-25 13:56:36 -07:00
INSTALL Tone down warning about GNU Interactive Tools 2008-07-08 23:05:26 -07:00
interpolate.c
interpolate.h
list-objects.c
list-objects.h
ll-merge.c Provide git_config with a callback-data parameter 2008-05-14 12:34:44 -07:00
ll-merge.h
lockfile.c rollback lock files on more signals than just SIGINT 2008-05-31 14:33:59 -07:00
log-tree.c log --graph --left-right: show left/right information in place of '*' 2008-05-25 12:06:52 -07:00
log-tree.h Remove dead code: show_log() sep argument and diff_options.msg_sep 2008-05-03 11:48:03 -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 Allow installing in the traditional way 2008-07-28 13:09:54 -07:00
match-trees.c
merge-file.c
merge-index.c
merge-recursive.h
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
name-hash.c Make hash_name_lookup able to do case-independent lookups 2008-04-09 01:22:25 -07:00
object.c
object.h
pack-check.c verify-pack: check packed object CRC when using index version 2 2008-06-24 23:58:57 -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 call init_pack_revindex() lazily 2008-06-23 21:25:20 -07:00
pack-revindex.h call init_pack_revindex() lazily 2008-06-23 21:25:20 -07:00
pack-write.c pack.indexversion config option now defaults to 2 2008-06-25 21:30:55 -07:00
pack.h verify-pack: check packed object CRC when using index version 2 2008-06-24 23:58:57 -07:00
pager.c Windows: Make the pager work. 2008-06-26 08:47:15 +02:00
parse-options.c parse-options: fix segmentation fault when a required value is missing 2008-07-21 21:20:04 -07:00
parse-options.h parse-options: add PARSE_OPT_LASTARG_DEFAULT flag 2008-07-09 01:33:24 -07:00
patch-delta.c
patch-id.c
patch-ids.c
patch-ids.h
path.c Allow add_path() to add non-existent directories to the path 2008-07-25 17:41:13 -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 Rename path_list to string_list 2008-07-21 19:11:50 -07:00
progress.c progress.c: avoid use of dynamic-sized array 2008-06-08 13:56:32 -07:00
progress.h
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
reachable.h
read-cache.c Make use of stat.ctime configurable 2008-07-28 23:26:25 -07:00
README
receive-pack.c Record the command invocation path early 2008-07-25 17:41:13 -07:00
reflog-walk.c Rename path_list to string_list 2008-07-21 19:11:50 -07:00
reflog-walk.h
refs.c Merge branch 'maint' 2008-07-09 00:19:50 -07:00
refs.h Allow for having for_each_ref() list extra refs 2008-05-04 17:41:44 -07:00
RelNotes Start preparing 1.5.6.4 release notes 2008-07-16 15:55:51 -07:00
remote.c make sure parsed wildcard refspec ends with slash 2008-07-27 14:14:01 -07:00
remote.h Refactor "tracking statistics" code used by "git checkout" 2008-07-02 23:32:25 -07:00
rerere.c Rename path_list to string_list 2008-07-21 19:11:50 -07:00
rerere.h Rename path_list to string_list 2008-07-21 19:11:50 -07:00
revision.c Merge branch 'maint' 2008-07-16 17:10:28 -07:00
revision.h sort_in_topological_order(): avoid setting a commit flag 2008-07-23 12:00:21 -07:00
run-command.c run-command (Windows): Run dashless "git <cmd>" 2008-07-28 23:02:11 -07:00
run-command.h Windows: Implement asynchronous functions as threads. 2008-06-26 08:45:08 +02:00
send-pack.h
server-info.c
setup.c Merge branch 'dr/ceiling' 2008-07-07 02:17:23 -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
sha1_file.c restore legacy behavior for read_sha1_file() 2008-07-14 23:35:32 -07:00
sha1_name.c ignore non-existent refs in dwim_log() 2008-07-23 18:11:04 -07:00
shallow.c
shell.c Record the command invocation path early 2008-07-25 17:41:13 -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
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
tag.h
tar.h
test-chmtime.c
test-date.c
test-delta.c
test-genrandom.c
test-match-trees.c
test-parse-options.c Extend parse-options test suite 2008-06-22 18:15:18 -07:00
test-path-utils.c Add support for GIT_CEILING_DIRECTORIES 2008-05-23 14:15:01 -07:00
test-sha1.c
test-sha1.sh more tr portability test script fixes 2008-03-13 00:57:52 -07:00
thread-utils.c
thread-utils.h
trace.c
transport.c Merge branch 'qq/maint' 2008-07-05 18:33:16 -07:00
transport.h Mark the list of refs to fetch as const 2008-05-04 17:41:44 -07:00
tree-diff.c Fix buffer overflow in git diff 2008-07-16 14:03:24 -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 unpack_trees(): allow callers to differentiate worktree errors from merge errors 2008-05-29 17:35:21 -07:00
unpack-trees.h unpack-trees: allow Porcelain to give different error messages 2008-05-19 19:30:13 -07:00
update-server-info.c Make usage strings dash-less 2008-07-13 14:12:48 -07:00
upload-pack.c Record the command invocation path early 2008-07-25 17:41:13 -07:00
usage.c
utf8.c
utf8.h
var.c Provide git_config with a callback-data parameter 2008-05-14 12:34:44 -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 Merge branch 'jc/report-tracking' 2008-07-13 15:15:23 -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 'maint' 2008-03-14 00:16:42 -07:00
xdiff-interface.h

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

	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.