1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-11-09 02:33:11 +01:00
Find a file
Linus Torvalds fac4b32887 Fix recent 'unpack_trees()'-related changes breaking 'git stash'
On Sat, 15 Mar 2008, SZEDER G?bor wrote:
>
> The testcase usually fails during the first 25 run, but sometimes it
> runs more than 100 times before failing.

Damn, this series has had more subtle issues than I ever expected.

'git stash' creates its saved working tree object with:

        # state of the working tree
        w_tree=$( (
                rm -f "$TMP-index" &&
                cp -p ${GIT_INDEX_FILE-"$GIT_DIR/index"} "$TMP-index" &&
                GIT_INDEX_FILE="$TMP-index" &&
                export GIT_INDEX_FILE &&
                git read-tree -m $i_tree &&
                git add -u &&
                git write-tree &&
                rm -f "$TMP-index"
        ) ) ||
                die "Cannot save the current worktree state"

which creates a new index file with the updates, and writes the tree from
that.

We have this logic where we compare the timestamp of the index with the
timestamp of the files and we then write them out "smudged" if they are
the same, and it basically depends on the fact that the date on the index
file is compared with the date encoded in the stat information itself.

And what is going on is:

 - we create a new index file with that "cp". We are careful to preserve
   the timestamps by using "-p", so this one should be all ok.

 - then we *update* that index by resetting it to the tree with git
   read-tree, but now we do *not* preserve the timestamp on this new copy
   any more, even though we copy over all the timestamps on the files that
   are indexed from the stat information!

Now, we always had that problem when re-writing the index, but we had this
clever workaround in the writing part: if the source had racily clean
entries, then when we wrote those out (and thus can't depend on the index
fiel timestamp showing that they are racily clean any more!), we would
smudge them when writing.

IOW, we handle this issue by having write_index() do this:

	for (i = 0; i < entries; i++) {
		...
		if (is_racy_timestamp(istate, ce))
			ce_smudge_racily_clean_entry(ce);
		..

when writing out entries. And that all took care of it, because now when
we wrote the new index, we'd change the timestamp on the index, yes, but
we'd smudge the entries we wrote out, so now the resulting index would
still show that file as not-up-to-date any more.

But with commit 34110cd4e3 ("Make
'unpack_trees()' have a separate source and destination index"), this
logic no longer triggers, because we now write out the "result" index, and
that one never got its timestamp updated from the source index, so it had
lost all that "is_racy_timestamp()" information!

This trivial patch fixes it. It looks trivial, and it's a simple fix, but
boy did it take me way too much thinking and explaining to myself to
explain why there was a problem in the first place!

The trivial fix is to just copy the index timestamp from the source index
into the result index. But we only do this if we *have* a source index, of
course, and if we will even bother to use the result.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2008-03-14 23:35:55 -07:00
arm
compat Add compat/snprintf.c for systems that return bogus 2008-03-05 13:12:07 -08:00
contrib Merge branch 'js/remote' 2008-03-11 22:33:51 -07:00
Documentation Documention: web--browse: add info about "browser.<tool>.cmd" config var 2008-03-14 00:31:06 -07:00
git-gui Merge git://repo.or.cz/git-gui 2008-03-11 22:59:35 -07:00
gitk-git Merge git://git.kernel.org/pub/scm/gitk/gitk 2008-03-14 17:49:40 -07:00
gitweb gitweb: Fix bug in href(..., -replay=>1) when using 'pathinfo' form 2008-03-12 09:43:08 -07:00
mozilla-sha1
perl Don't cache DESTDIR in perl/perl.mak. 2007-12-11 00:38:46 -08:00
ppc
t Merge branch 'maint' 2008-03-14 00:16:42 -07:00
templates Merge branch 'maint' 2008-02-29 00:00:09 -08:00
xdiff xdl_merge(): introduce XDL_MERGE_ZEALOUS_ALNUM 2008-02-18 00:10:37 -08:00
.gitattributes Define the project whitespace policy 2008-02-11 13:23:15 -08:00
.gitignore use build-time SHELL_PATH in test scripts 2008-02-29 00:00:29 -08:00
.mailmap Sync with 1.5.4.2 and start 1.5.5 Release Notes 2008-02-17 01:51:46 -08:00
alias.c make alias lookup a public, procedural function 2008-02-24 18:31:49 -08:00
alloc.c
archive-tar.c archive-tar.c: guard config parser from value=NULL 2008-02-11 13:11:36 -08:00
archive-zip.c
archive.c Move sha1_file_to_archive into libgit 2008-01-18 12:33:50 -08:00
archive.h
attr.c gitattributes: fix relative path matching 2008-02-07 00:04:50 -08:00
attr.h
base85.c
blob.c
blob.h
branch.c branch: optionally setup branch.*.merge from upstream local branches 2008-02-19 21:17:45 -08:00
branch.h branch: optionally setup branch.*.merge from upstream local branches 2008-02-19 21:17:45 -08:00
builtin-add.c Revert part of 1abf095 (git-add: adjust to the get_pathspec() changes) 2008-03-07 00:14:43 -08:00
builtin-annotate.c
builtin-apply.c Merge branch 'jc/apply-whitespace' 2008-02-24 17:23:17 -08:00
builtin-archive.c Move sha1_file_to_archive into libgit 2008-01-18 12:33:50 -08:00
builtin-blame.c Avoid unnecessary "if-before-free" tests. 2008-02-22 14:14:40 -08:00
builtin-branch.c Merge branch 'jm/free' 2008-02-27 13:03:50 -08:00
builtin-bundle.c bundle create: keep symbolic refs' names instead of resolving them 2007-11-22 15:15:25 -08:00
builtin-cat-file.c
builtin-check-attr.c
builtin-check-ref-format.c
builtin-checkout-index.c Improve use of lockfile API 2008-01-16 15:35:35 -08:00
builtin-checkout.c Make 'unpack_trees()' have a separate source and destination index 2008-03-09 01:03:38 -08:00
builtin-clean.c git-clean: correct printing relative path 2008-03-07 21:22:37 -08:00
builtin-commit-tree.c Re-fix "builtin-commit: fix --signoff" 2007-12-09 00:55:55 -08:00
builtin-commit.c Make 'unpack_trees()' have a separate source and destination index 2008-03-09 01:03:38 -08:00
builtin-config.c Merge branch 'jk/noetcconfig' 2008-02-16 17:56:51 -08:00
builtin-count-objects.c
builtin-describe.c Merge branch 'jc/describe-always' 2008-03-08 20:10:09 -08:00
builtin-diff-files.c add a "basic" diff config callback 2008-01-04 16:05:23 -08:00
builtin-diff-index.c add a "basic" diff config callback 2008-01-04 16:05:23 -08:00
builtin-diff-tree.c add a "basic" diff config callback 2008-01-04 16:05:23 -08:00
builtin-diff.c Merge branch 'jc/diff-relative' 2008-02-27 11:55:28 -08:00
builtin-fast-export.c Merge branch 'jm/free' 2008-02-27 13:03:50 -08: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 'sp/fetch-optim' 2008-03-08 20:11:35 -08:00
builtin-fetch.c Merge branch 'maint' 2008-03-14 00:16:42 -07:00
builtin-fmt-merge-msg.c check return code of prepare_revision_walk 2008-02-17 23:51:12 -08:00
builtin-for-each-ref.c builtin-for-each-ref.c: fix typo in error message 2008-02-24 18:34:34 -08:00
builtin-fsck.c Merge branch 'mk/maint-parse-careful' 2008-03-02 15:11:07 -08:00
builtin-gc.c gc: call "prune --expire 2.weeks.ago" by default 2008-03-12 23:47:01 -07:00
builtin-grep.c Teach git-grep --name-only as synonym for -l 2008-02-20 20:36:20 -08:00
builtin-http-fetch.c Merge branch 'mh/maint-http-proxy-fix' 2008-03-02 15:11:26 -08:00
builtin-init-db.c Merge branch 'maint' 2008-02-26 00:14:22 -08:00
builtin-log.c log/show/whatchanged: introduce format.pretty configuration 2008-03-05 12:06:09 -08:00
builtin-ls-files.c Revert part of d089eba (setup: sanitize absolute and funny paths in get_pathspec()) 2008-03-07 00:14:43 -08:00
builtin-ls-remote.c Merge branch 'maint' 2008-03-04 00:34:39 -08:00
builtin-ls-tree.c
builtin-mailinfo.c mailinfo: feed only one line to handle_filter() for QP input 2008-02-15 22:16:34 -08:00
builtin-mailsplit.c Merge branch 'maint' 2007-11-09 00:21:44 -08:00
builtin-merge-base.c
builtin-merge-file.c Merge branch 'maint' 2008-03-14 00:16:42 -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' 2008-03-14 00:16:42 -07:00
builtin-mv.c Revert part of 744dacd (builtin-mv: minimum fix to avoid losing files) 2008-03-07 00:14:43 -08:00
builtin-name-rev.c describe --always: fall back to showing an abbreviated object name 2008-03-03 00:52:17 -08:00
builtin-pack-objects.c pack-objects: proper pack time stamping with --max-pack-size 2008-03-13 22:51:30 -07:00
builtin-pack-refs.c Improve use of lockfile API 2008-01-16 15:35:35 -08:00
builtin-prune-packed.c
builtin-prune.c Make git prune remove temporary packs that look like write failures 2008-02-11 12:22:58 -08:00
builtin-push.c Resolve value supplied for no-colon push refspecs 2008-02-20 11:06:27 -08:00
builtin-read-tree.c read-tree() and unpack_trees(): use consistent limit 2008-03-13 23:56:36 -07:00
builtin-reflog.c builtin-reflog.c: don't install new reflog on write failure 2008-02-27 13:26:24 -08:00
builtin-remote.c "remote update": print remote name being fetched from 2008-03-11 22:13:16 -07:00
builtin-rerere.c Merge branch 'maint' 2008-02-26 00:14:22 -08:00
builtin-reset.c Make builtin-reset.c use parse_options. 2008-03-05 12:16:27 -08:00
builtin-rev-list.c Merge branch 'mk/maint-parse-careful' 2008-03-02 15:11:07 -08:00
builtin-rev-parse.c parse-opt: bring PARSE_OPT_HIDDEN and NONEG to git-rev-parse --parseopt 2008-03-02 14:07:47 -08:00
builtin-revert.c Merge branch 'maint' 2008-03-02 23:59:50 -08:00
builtin-rm.c Improve use of lockfile API 2008-01-16 15:35:35 -08:00
builtin-send-pack.c Clean up find_unique_abbrev() callers 2008-03-01 23:52:13 -08:00
builtin-shortlog.c Merge branch 'aw/maint-shortlog-blank-lines' 2008-03-08 02:23:42 -08:00
builtin-show-branch.c builtin-show-branch.c: guard config parser from value=NULL 2008-02-11 13:11:36 -08:00
builtin-show-ref.c deref_tag: handle return value NULL 2008-02-17 23:46:55 -08:00
builtin-stripspace.c
builtin-symbolic-ref.c
builtin-tag.c Merge branch 'maint' 2008-03-11 21:40:47 -07:00
builtin-tar-tree.c
builtin-unpack-objects.c Revert "unpack-objects: prevent writing of inconsistent objects" 2008-03-04 03:11:30 -08:00
builtin-update-index.c Make on-disk index representation separate from in-core one 2008-01-21 12:44:31 -08:00
builtin-update-ref.c
builtin-upload-archive.c
builtin-verify-pack.c make verify_one_pack() a bit less wrong wrt packed_git structure 2008-03-01 01:44:45 -08:00
builtin-verify-tag.c start_command(), if .in/.out > 0, closes file descriptors, not the callers 2008-02-23 11:59:44 -08:00
builtin-write-tree.c Make error messages from cherry-pick/revert more sensible 2008-02-05 00:39:19 -08:00
builtin.h Make git-remote a builtin 2008-03-01 01:51:44 -08:00
bundle.c start_command(), if .in/.out > 0, closes file descriptors, not the callers 2008-02-23 11:59:44 -08:00
bundle.h
cache-tree.c Merge branch 'jc/error-message-in-cherry-pick' 2008-02-11 16:46:27 -08:00
cache-tree.h Make error messages from cherry-pick/revert more sensible 2008-02-05 00:39:19 -08:00
cache.h Merge branch 'lt/unpack-trees' 2008-03-11 22:13:44 -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 Add color.ui variable which globally enables colorization if set 2008-02-18 00:00:38 -08:00
color.h Add color.ui variable which globally enables colorization if set 2008-02-18 00:00:38 -08:00
combine-diff.c Fix rewrite_diff() name quoting. 2007-12-26 17:13:36 -08:00
command-list.txt Officially deprecate repo-config. 2008-01-17 22:52:40 -08:00
commit.c builtin-fsck: reports missing parent commits 2008-02-25 23:57:35 -08:00
commit.h Merge branch 'mk/maint-parse-careful' 2008-03-02 15:11:07 -08:00
config.c Merge branch 'js/branch-track' 2008-02-27 13:02:57 -08:00
config.mak.in autoconf: Test FREAD_READS_DIRECTORIES 2008-03-11 02:10:43 -07:00
configure.ac autoconf: Test FREAD_READS_DIRECTORIES 2008-03-11 02:10:43 -07:00
connect.c Avoid unnecessary "if-before-free" tests. 2008-02-22 14:14:40 -08:00
convert.c Merge branch 'sp/safecrlf' 2008-02-16 17:59:20 -08:00
copy.c Use a single implementation and API for copy_file() 2008-02-25 13:06:49 -08:00
COPYING
csum-file.c remove dead code from the csum-file interface 2007-11-05 12:55:33 -08:00
csum-file.h remove dead code from the csum-file interface 2007-11-05 12:55:33 -08:00
ctype.c
daemon.c daemon: ensure that base-path is an existing directory 2008-02-27 14:47:36 -08:00
date.c timezone_names[]: fixed the tz offset for New Zealand. 2008-02-25 21:56:10 -08:00
decorate.c
decorate.h
delta.h
diff-delta.c fix style of a few comments in diff-delta.c 2007-12-18 15:22:28 -08:00
diff-lib.c unpack_trees(): fix diff-index regression. 2008-03-10 23:51:13 -07:00
diff.c diff: make sure work tree side is shown as 0{40} when different 2008-03-02 01:08:34 -08:00
diff.h Merge branch 'jc/diff-relative' 2008-02-27 11:55:28 -08:00
diffcore-break.c rename: Break filepairs with different types. 2007-12-02 02:24:46 -08:00
diffcore-delta.c
diffcore-order.c
diffcore-pickaxe.c
diffcore-rename.c rename: warn user when we have turned off rename detection 2008-03-01 01:30:15 -08:00
diffcore.h
dir.c Avoid unnecessary "if-before-free" tests. 2008-02-22 14:14:40 -08:00
dir.h gitignore: lazily find dtype 2008-02-05 00:46:49 -08:00
dump-cache-tree.c
entry.c Make on-disk index representation separate from in-core one 2008-01-21 12:44:31 -08:00
environment.c Merge branch 'js/branch-track' 2008-02-27 13:02:57 -08:00
exec_cmd.c Trace and quote with argv: get rid of unneeded count argument. 2007-12-03 22:11:53 -08:00
exec_cmd.h
fast-import.c Merge branch 'maint' to sync with 1.5.4.4 2008-03-08 20:07:57 -08:00
fetch-pack.h Teach fetch-pack/upload-pack about --include-tag 2008-03-04 23:28:14 -08:00
fixup-builtins
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 add--interactive: handle initial commit better 2008-02-16 01:02:44 -08:00
git-am.sh am: --rebasing 2008-03-05 10:52:56 -08:00
git-archimport.perl
git-bisect.sh Eliminate confusing "won't bisect on seeked tree" failure 2008-02-27 13:26:30 -08:00
git-clone.sh clone: support cloning full bundles 2008-02-29 16:27:25 -08:00
git-compat-util.h pack-objects: proper pack time stamping with --max-pack-size 2008-03-13 22:51:30 -07:00
git-cvsexportcommit.perl Merge branch 'js/maint-cvsexport' into maint 2008-03-08 02:13:52 -08:00
git-cvsimport.perl Merge branch 'maint' 2008-03-12 23:47:31 -07:00
git-cvsserver.perl specify explicit "--pretty=medium" with git log/show/whatchanged 2008-03-05 12:06:09 -08:00
git-filter-branch.sh filter-branch: handle "disappearing tree" case correctly in subdir filter 2008-03-08 13:25:57 -08:00
git-instaweb.sh instaweb: use 'git-web--browse' to launch browser. 2008-02-05 01:01:49 -08:00
git-lost-found.sh Merge branch 'ph/parseopt-sh' 2007-11-17 21:39:37 -08:00
git-merge-octopus.sh
git-merge-one-file.sh Support a merge with conflicting gitlink change 2007-12-11 00:40:56 -08:00
git-merge-resolve.sh
git-merge-stupid.sh
git-merge.sh specify explicit "--pretty=medium" with git log/show/whatchanged 2008-03-05 12:06:09 -08:00
git-mergetool.sh Teach git mergetool to use custom commands defined at config time 2008-03-05 12:07:04 -08:00
git-parse-remote.sh
git-pull.sh pull: pass --strategy along to to rebase 2008-02-22 21:44:46 -08:00
git-quiltimport.sh quiltimport: fix misquoting of parsed -p<num> parameter 2008-03-12 21:07:19 -07:00
git-rebase--interactive.sh Prompt to continue when editing during rebase --interactive 2008-02-27 11:23:22 -08:00
git-rebase.sh git rebase --abort: always restore the right commit 2008-03-11 19:30:33 -07:00
git-relink.perl git-relink: avoid hard linking in objects/info directory 2008-01-30 00:01:27 -08:00
git-repack.sh Migrate git-repack.sh to use git-rev-parse --parseopt 2007-11-05 22:48:13 -08:00
git-request-pull.sh Merge branch 'ph/parseopt-sh' 2007-11-17 21:39:37 -08:00
git-send-email.perl send-email: --no-signed-off-cc should suppress 'sob' cc 2008-03-07 22:35:34 -08:00
git-sh-setup.sh Simplify setup of $GIT_DIR in git-sh-setup.sh 2008-02-18 21:53:44 -08:00
git-stash.sh git-stash: add new 'pop' subcommand 2008-02-22 22:59:11 -08:00
git-submodule.sh git-submodule - Allow adding a submodule in-place 2008-03-05 13:37:46 -08:00
git-svn.perl Merge branch 'maint' 2008-03-11 21:40:47 -07:00
GIT-VERSION-GEN GIT 1.5.4.4 2008-03-08 19:43:21 -08:00
git-web--browse.sh web--browse: use custom commands defined at config time 2008-03-14 00:31:06 -07:00
git.c Make git-remote a builtin 2008-03-01 01:51:44 -08:00
git.spec.in Rename git-core rpm to just git and rename the meta-pacakge to git-all. 2008-02-19 22:17:22 -08:00
grep.c
grep.h
hash-object.c hash-object: cleanup handling of command line options 2008-02-22 09:32:49 -08: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 help: respect aliases 2008-02-24 18:31:50 -08:00
http-push.c Merge branch 'mh/maint-http-proxy-fix' into maint 2008-03-08 02:20:37 -08:00
http-walker.c Set proxy override with http_init() 2008-02-27 15:37:57 -08:00
http.c Merge branch 'mh/maint-http-proxy-fix' into maint 2008-03-08 02:20:37 -08:00
http.h Set proxy override with http_init() 2008-02-27 15:37:57 -08:00
ident.c ident.c: reword error message when the user name cannot be determined 2008-03-08 19:43:21 -08:00
imap-send.c Avoid unnecessary "if-before-free" tests. 2008-02-22 14:14:40 -08:00
index-pack.c index-pack: introduce checking mode 2008-02-28 21:56:02 -08:00
INSTALL INSTALL: git-merge no longer uses cpio 2008-02-05 23:31:17 -08:00
interpolate.c Avoid unnecessary "if-before-free" tests. 2008-02-22 14:14:40 -08:00
interpolate.h
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 merge-recursive: split low-level merge functions out. 2008-02-18 00:46:13 -08:00
ll-merge.h merge-recursive: split low-level merge functions out. 2008-02-18 00:46:13 -08:00
lockfile.c close_lock_file(): new function in the lockfile API 2008-01-16 15:35:03 -08:00
log-tree.c Merge branch 'db/cover-letter' 2008-02-27 12:06:41 -08:00
log-tree.h Export some email and pretty-printing functions 2008-02-19 00:56:46 -08:00
mailmap.c mailmap: fix bogus for() loop that happened to be safe by accident 2007-12-08 03:40:12 -08:00
mailmap.h
Makefile gitk: Default to using po2msg.sh if msgfmt doesn't grok --tcl, -l and -d 2008-03-14 20:24:31 +11:00
match-trees.c
merge-file.c xdl_diff: identify call sites. 2007-12-13 23:04:26 -08:00
merge-index.c git-merge-index documentation: clarify synopsis 2008-02-22 07:02:40 -08:00
merge-recursive.h Build-in merge-recursive 2008-02-09 23:16:51 -08:00
merge-tree.c Make 'traverse_trees()' traverse conflicting DF entries in parallel 2008-03-09 00:43:47 -08:00
mktag.c
mktree.c
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 Remove unused object-ref code 2008-02-25 23:57:35 -08:00
pack-check.c add storage size output to 'git verify-pack -v' 2008-03-01 01:44:46 -08:00
pack-redundant.c
pack-revindex.c factorize revindex code out of builtin-pack-objects.c 2008-03-01 01:44:45 -08:00
pack-revindex.h factorize revindex code out of builtin-pack-objects.c 2008-03-01 01:44:45 -08:00
pack-write.c Merge branch 'np/progress' 2007-11-02 16:27:37 -07:00
pack.h Merge branch 'np/progress' 2007-11-02 16:27:37 -07:00
pager.c sending errors to stdout under $PAGER 2008-02-17 12:47:01 -08:00
parse-options.c Merge branch 'js/remote' 2008-03-11 22:33:51 -07:00
parse-options.h Merge branch 'js/remote' 2008-03-11 22:33:51 -07:00
patch-delta.c
patch-id.c
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
path-list.c path-list: add functions to work with unsorted lists 2008-03-01 01:51:44 -08:00
path-list.h path-list: add functions to work with unsorted lists 2008-03-01 01:51:44 -08:00
path.c Do not use GUID on dir in git init --shared=all on FreeBSD 2008-03-05 12:22:26 -08:00
pkt-line.c
pkt-line.h
pretty.c Merge branch 'jm/free' 2008-02-27 13:03:50 -08:00
progress.c Flush progress message buffer in display(). 2007-11-20 13:16:15 -08:00
progress.h nicer display of thin pack completion 2007-11-08 15:43:41 -08:00
quote.c Merge branch 'dp/clean-fix' 2008-03-08 21:29:56 -08: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
read-cache.c Add 'const' where appropriate to index handling functions 2008-03-09 00:43:48 -08:00
README
receive-pack.c Revert "receive-pack: use strict mode for unpacking objects" 2008-03-04 03:11:06 -08:00
reflog-walk.c
reflog-walk.h
refs.c Merge commit '74359821' into js/reflog-delete 2008-03-03 01:20:19 -08:00
refs.h refs.c: make close_ref() and commit_ref() non-static 2008-02-22 22:57:38 -08:00
RelNotes Start preparing for 1.5.4.4 2008-02-27 23:37:39 -08:00
remote.c Make git-remote a builtin 2008-03-01 01:51:44 -08:00
remote.h Make git-remote a builtin 2008-03-01 01:51:44 -08:00
revision.c Merge branch 'jc/maint-log-merge-left-right' 2008-03-02 15:12:04 -08:00
revision.h Merge branch 'db/cover-letter' 2008-02-27 12:06:41 -08:00
run-command.c run-command: Redirect stderr to a pipe before redirecting stdout to stderr 2008-03-05 12:18:03 -08:00
run-command.h start_command(), if .in/.out > 0, closes file descriptors, not the callers 2008-02-23 11:59:44 -08: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 get_pathspec(): die when an out-of-tree path is given 2008-03-07 00:14:42 -08:00
sha1_file.c fix unimplemented packed_object_info_detail() features 2008-03-01 01:44:46 -08:00
sha1_name.c Merge branch 'jc/cherry-pick' (early part) 2008-03-11 02:05:12 -07:00
shallow.c Merge branch 'mk/maint-parse-careful' 2008-02-18 20:56:01 -08:00
shell.c
shortlog.h Add API access to shortlog 2008-02-25 19:57:06 -08:00
show-index.c
sideband.c recv_sideband: Do not use ANSI escape sequence on dumb terminals. 2008-01-09 12:23:59 -08:00
sideband.h
strbuf.c Avoid a useless prefix lookup in strbuf_expand() 2008-02-09 23:57:08 -08:00
strbuf.h Avoid a useless prefix lookup in strbuf_expand() 2008-02-09 23:57:08 -08:00
symlinks.c
tag.c Merge branch 'mk/maint-parse-careful' 2008-03-02 15:11:07 -08:00
tag.h
tar.h
test-absolute-path.c
test-chmtime.c
test-date.c
test-delta.c
test-genrandom.c
test-match-trees.c
test-parse-options.c parse-options: new option type to treat an option-like parameter as an argument. 2008-03-02 14:07:47 -08:00
test-sha1.c
test-sha1.sh the use of 'tr' in the test suite isn't really portable 2007-12-17 20:49:18 -08: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 Teach git-fetch to exploit server side automatic tag following 2008-03-04 23:28:15 -08:00
transport.h Teach git-fetch to exploit server side automatic tag following 2008-03-04 23:28:15 -08:00
tree-diff.c Fix small memory leaks induced by diff_tree_setup_paths 2007-12-12 10:59:22 -08: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 Merge branch 'mk/maint-parse-careful' 2008-03-02 15:11:07 -08:00
tree.h
unpack-file.c
unpack-trees.c Fix recent 'unpack_trees()'-related changes breaking 'git stash' 2008-03-14 23:35:55 -07:00
unpack-trees.h read-tree() and unpack_trees(): use consistent limit 2008-03-13 23:56:36 -07:00
update-server-info.c
upload-pack.c Teach fetch-pack/upload-pack about --include-tag 2008-03-04 23:28:14 -08:00
usage.c print warning/error/fatal messages in one shot 2007-11-09 22:25:36 -08: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 Re-fix "builtin-commit: fix --signoff" 2007-12-09 00:55:55 -08:00
walker.c Remove unused object-ref code 2008-02-25 23:57:35 -08:00
walker.h Set proxy override with http_init() 2008-02-27 15:37:57 -08:00
write_or_die.c
ws.c git-apply --whitespace=fix: fix off by one thinko 2008-02-26 12:24:40 -08:00
wt-status.c Make private quote_path() in wt-status.c available as quote_path_relative() 2008-03-07 21:22:25 -08:00
wt-status.h git-commit: squelch needless message during an empty merge 2007-12-12 20:50:33 -08:00
xdiff-interface.c Merge branch 'maint' 2008-03-14 00:16:42 -07:00
xdiff-interface.h xdl_diff: identify call sites. 2007-12-13 23:04:26 -08: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.