{"thread":{"id":"14708","subject":"GIT 1.6.0-rc1","startedAt":"2008-07-28T00:09:38Z","lastAt":"2008-07-30T06:15:41Z","messageCount":12,"participants":["Junio C Hamano","Petr Baudis","Alex Riesen"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"85211","messageId":"7vy73myim5.fsf@gitster.siamese.dyndns.org","threadId":"14708","inReplyTo":null,"subject":"GIT 1.6.0-rc1","fromName":"Junio C Hamano","fromEmail":"junio@pobox.com","sentAt":"2008-07-28T00:09:38Z","receivedAt":"2008-07-28T00:09:38Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Ok, so I tagged and pushed it out.  There still is the \"git mv\" bugfix\nfrom Pasky that is parked in 'next' but other than that I think this is\npretty much \"it\" for 1.6.0 feature-wise.\n\nMajor parts of the changes since 1.6.0-rc0 consists of documentation and\ntests portability; there is nothing surprising nor scary.\n\nTest tarballs and RPMs are also there.  Please give it a good beating.\n\n----------------------------------------------------------------\n\nChanges since v1.6.0-rc0 are as follows:\n\nAbhijit Menon-Sen (2):\n      git-gui: Look for gitk in $PATH, not $LIBEXEC/git-core\n      Clarify that \"git log x.c y.h\" lists commits that touch either file\n\nAlex Riesen (1):\n      Allow pager of diff command be enabled/disabled\n\nAlexander Gavrilov (4):\n      Fix pre-commit hooks under MinGW/MSYS\n      Add options to control the search for copies in blame.\n      Kill the blame back-end on window close.\n      Add a menu item to invoke full copy detection in blame.\n\nAnders Melchiorsen (1):\n      Documentation: fix diff.external example\n\nBjörn Steinbrink (2):\n      index-pack.c: correctly initialize appended objects\n      rev-parse: Add support for the ^! and ^@ syntax\n\nBrad King (1):\n      git-svn: teach dcommit about svn auto-props\n\nBrandon Casey (7):\n      t/: Replace diff [-u|-U0] with test_cmp to allow compilation with old diff\n      t4116-apply-reverse.sh: use $TAR rather than tar\n      t3200,t7201: replace '!' with test_must_fail\n      t7502-commit.sh: rearrange test to make more portable\n      t/t4202-log.sh: add newline at end of file\n      Teach fsck and prune about the new location of temporary objects\n      perl/Makefile: update NO_PERL_MAKEMAKER section\n\nCesar Eduardo Barros (1):\n      Documentation/git-submodule.txt: fix doubled word\n\nDaniel Barkalow (1):\n      In perforce, RCS keywords are case-sensitive\n\nJakub Narebski (1):\n      gitweb: More about how gitweb gets 'owner' of repository\n\nJohannes Schindelin (9):\n      Rename .git/rebase to .git/rebase-apply\n      Rename path_list to string_list\n      Fix two leftovers from path_list->string_list\n      Ignore dirty submodule states in \"git pull --rebase\"\n      Add test to show that show-branch misses out the 8th column\n      sort_in_topological_order(): avoid setting a commit flag\n      builtin-commit: Two trivial style-cleanups\n      git daemon: avoid waking up too often\n      Avoid chdir() in list_commands_in_dir()\n\nJohannes Sixt (12):\n      rebase -i: When an 'edit' stops, mention the commit\n      Makefile: Do not install a copy of 'git' in $(gitexecdir)\n      Makefile: Normalize $(bindir) and $(gitexecdir) before comparing\n      Record the command invocation path early\n      Fix relative built-in paths to be relative to the command invocation\n      Allow the built-in exec path to be relative to the command invocation path\n      Allow add_path() to add non-existent directories to the path\n      Windows: Make $(gitexecdir) relative\n      Windows: Make sure argv[0] has a path\n      Windows: Do not compile git-shell\n      git-gui: Fix \"Stage/Unstage Line\" with one line of context.\n      git-gui: \"Stage Line\": Treat independent changes in adjacent lines better\n\nJonathan Nieder (3):\n      git-diff(1): \"--c\" -> \"--cc\" typo fix\n      document that git-tag can tag more than heads\n      t6030 (bisect): work around Mac OS X \"ls\"\n\nJunio C Hamano (13):\n      Update my e-mail address\n      Revert \"make git-status use a pager\"\n      tests: do not rely on external \"patch\"\n      stash save: fix parameter handling\n      builtin-branch.c: remove unused code in append_ref() callback function\n      builtin-branch.c: optimize --merged and --no-merged\n      Documentation: clarify diff --cc\n      ignore non-existent refs in dwim_log()\n      tests: propagate $(TAR) down from the toplevel Makefile\n      Makefile: fix shell quoting\n      Documentation: clarify how to disable elements in core.whitespace\n      make sure parsed wildcard refspec ends with slash\n      GIT 1.6.0-rc1\n\nLars Hjemli (3):\n      builtin-branch: remove duplicated code\n      builtin-branch: factor out merge_filter matching\n      builtin-branch: fix -v for --[no-]merged\n\nLee Marlow (2):\n      bash completion: Add long options for 'git rm'\n      bash completion: Add completion for 'git help'\n\nMiklos Vajna (2):\n      builtin-merge: give a proper error message for invalid strategies in config\n      t7601: extend the 'merge picks up the best result' test\n\nNikolaj Schumacher (1):\n      Don't cut off last character of commit descriptions.\n\nOlivier Marin (4):\n      git-am: remove dash from help message\n      parse-options: fix segmentation fault when a required value is missing\n      git am --skip: clean the index while preserving local changes\n      update test case to protect am --skip behaviour\n\nP. Christeas (1):\n      svnimport: newer libsvn wants us to ask for the root with \"\", not \"/\"\n\nPeter Valdemar Mørch (1):\n      send-email: find body-encoding correctly\n\nPetr Baudis (4):\n      git-filter-branch.sh: Allow running in bare repositories\n      Documentation/git-filter-branch: teach \"rm\" instead of \"update-index --remove\"\n      git-mv: Remove dead code branch\n      git-mv: Keep moved index entries inact\n\nPhilippe Bruhat (1):\n      mailinfo: better parse email adresses containg parentheses\n\nPierre Habouzit (4):\n      builtin-merge: add missing structure initialization\n      git-submodule: move ill placed shift.\n      git-checkout: fix command line parsing.\n      git-checkout: improve error messages, detect ambiguities.\n\nRené Scharfe (5):\n      archive: add write_archive()\n      archive: move parameter parsing code to archive.c\n      archive: define MAX_ARGS where it's needed\n      archive: declare struct archiver where it's needed\n      archive: allow --exec and --remote without equal sign\n\nSZEDER Gábor (2):\n      checkout: mention '--' in the docs\n      bash: offer only paths after '--' for 'git checkout'\n\nShawn O. Pearce (2):\n      git-gui: Correct 'Visualize Branches' on Mac OS X to start gitk\n      fsck: Don't require tmp_obj_ file names are 14 bytes in length\n\nStephan Beyer (7):\n      git-am: Add colon before the subject that is printed out as being applied\n      am --abort: Add to bash-completion and mention in git-rerere documentation\n      Make non-static functions, that may be static, static\n      Move launch_editor() from builtin-tag.c to editor.c\n      editor.c: Libify launch_editor()\n      git-am: Mention --abort in usage string part of OPTIONS_SPEC\n      git-reset: Let -q hush \"locally modified\" messages\n\nSteve Haslam (2):\n      Propagate -u/--upload-pack option of \"git clone\" to transport.\n      Remove references to git-fetch-pack from \"git clone\" documentation.\n\nThomas Rast (2):\n      git-completion.bash: provide completion for 'show-branch'\n      bash completion: Add long options for 'git describe'\n"},{"id":"85214","messageId":"20080728004433.GE32184@machine.or.cz","threadId":"14708","inReplyTo":"7vy73myim5.fsf@gitster.siamese.dyndns.org","subject":"Re: GIT 1.6.0-rc1","fromName":"Petr Baudis","fromEmail":"pasky@suse.cz","sentAt":"2008-07-28T00:44:34Z","receivedAt":"2008-07-28T00:44:34Z","isPatch":false,"sender":{"key":"pasky@ucw.cz","avatar":"https://avatars.githubusercontent.com/u/18439?v=4"},"body":"  Hi,\n\nOn Sun, Jul 27, 2008 at 05:09:38PM -0700, Junio C Hamano wrote:\n> Ok, so I tagged and pushed it out.  There still is the \"git mv\" bugfix\n> from Pasky that is parked in 'next' but other than that I think this is\n> pretty much \"it\" for 1.6.0 feature-wise.\n\n  BTW, it seems that in the end, the bugfix made it to -rc1's master.\n(Which is cool. :-)\n\n\t\t\t\tPetr \"Pasky\" Baudis\n"},{"id":"85252","messageId":"20080728063838.GB4234@blimp.local","threadId":"14708","inReplyTo":"7vy73myim5.fsf@gitster.siamese.dyndns.org","subject":"Re: GIT 1.6.0-rc1","fromName":"Alex Riesen","fromEmail":"raa.lkml@gmail.com","sentAt":"2008-07-28T06:38:38Z","receivedAt":"2008-07-28T06:38:38Z","isPatch":false,"sender":{"key":"raa.lkml@gmail.com","avatar":"https://avatars.githubusercontent.com/u/324101?v=4"},"body":"Junio C Hamano, Mon, Jul 28, 2008 02:09:38 +0200:\n> Ok, so I tagged and pushed it out.  There still is the \"git mv\" bugfix\n> from Pasky that is parked in 'next' but other than that I think this is\n> pretty much \"it\" for 1.6.0 feature-wise.\n> \n> Major parts of the changes since 1.6.0-rc0 consists of documentation and\n> tests portability; there is nothing surprising nor scary.\n\nt2103-update-index-ignore-missing.sh still broken on Windows because\nof stat.st_size being 0 for directories there.\n\n    http://thread.gmane.org/gmane.comp.version-control.git/89370\n"},{"id":"85255","messageId":"7vwsj6tsm3.fsf@gitster.siamese.dyndns.org","threadId":"14708","inReplyTo":"20080728063838.GB4234@blimp.local","subject":"Re: GIT 1.6.0-rc1","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2008-07-28T06:44:52Z","receivedAt":"2008-07-28T06:44:52Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Alex Riesen <raa.lkml@gmail.com> writes:\n\n> t2103-update-index-ignore-missing.sh still broken on Windows because\n> of stat.st_size being 0 for directories there.\n\nI recall we did not reach a useful conclusion of that discussion.\n"},{"id":"85420","messageId":"20080728213727.GA3721@blimp.local","threadId":"14708","inReplyTo":"7vwsj6tsm3.fsf@gitster.siamese.dyndns.org","subject":"Re: GIT 1.6.0-rc1","fromName":"Alex Riesen","fromEmail":"raa.lkml@gmail.com","sentAt":"2008-07-28T21:37:27Z","receivedAt":"2008-07-28T21:37:27Z","isPatch":false,"sender":{"key":"raa.lkml@gmail.com","avatar":"https://avatars.githubusercontent.com/u/324101?v=4"},"body":"Junio C Hamano, Mon, Jul 28, 2008 08:44:52 +0200:\n> Alex Riesen <raa.lkml@gmail.com> writes:\n> \n> > t2103-update-index-ignore-missing.sh still broken on Windows because\n> > of stat.st_size being 0 for directories there.\n> \n> I recall we did not reach a useful conclusion of that discussion.\n\nWhy isn't the proposed patch useful? (and would it be possible to make\nthe answer out of plain, small and short words?)\n"},{"id":"85423","messageId":"7vr69dky93.fsf@gitster.siamese.dyndns.org","threadId":"14708","inReplyTo":"20080728213727.GA3721@blimp.local","subject":"Re: GIT 1.6.0-rc1","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2008-07-29T06:20:08Z","receivedAt":"2008-07-29T06:20:08Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Alex Riesen <raa.lkml@gmail.com> writes:\n\n> Junio C Hamano, Mon, Jul 28, 2008 08:44:52 +0200:\n>> Alex Riesen <raa.lkml@gmail.com> writes:\n>> \n>> > t2103-update-index-ignore-missing.sh still broken on Windows because\n>> > of stat.st_size being 0 for directories there.\n>> \n>> I recall we did not reach a useful conclusion of that discussion.\n>\n> Why isn't the proposed patch useful? (and would it be possible to make\n> the answer out of plain, small and short words?)\n\nCan you answer out of plain, small and short words why the proposed patch\nis correct without unwanted side effects, not just \"this seems to solve\nthe particular issue for me but I don't know if it has unintended side\neffects\"?\n"},{"id":"85429","messageId":"7v4p69jefb.fsf@gitster.siamese.dyndns.org","threadId":"14708","inReplyTo":"7vr69dky93.fsf@gitster.siamese.dyndns.org","subject":"Re: GIT 1.6.0-rc1","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2008-07-29T08:13:44Z","receivedAt":"2008-07-29T08:13:44Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Junio C Hamano <gitster@pobox.com> writes:\n\n> Alex Riesen <raa.lkml@gmail.com> writes:\n>\n>> Junio C Hamano, Mon, Jul 28, 2008 08:44:52 +0200:\n>>> Alex Riesen <raa.lkml@gmail.com> writes:\n>>> \n>>> > t2103-update-index-ignore-missing.sh still broken on Windows because\n>>> > of stat.st_size being 0 for directories there.\n>>> \n>>> I recall we did not reach a useful conclusion of that discussion.\n>>\n>> Why isn't the proposed patch useful? (and would it be possible to make\n>> the answer out of plain, small and short words?)\n>\n> Can you answer out of plain, small and short words why the proposed patch\n> is correct without unwanted side effects, not just \"this seems to solve\n> the particular issue for me but I don't know if it has unintended side\n> effects\"?\n\nOk, I took a deeper look at the codepaths involved.  Although it does work\naround the issue, I do not think your patch alone is the \"correct\" one in\nthe longer term.\n\nIt needs a bit of explanation, and the explanation won't be exactly\n\"plain, small and short\", unfortunately.\n\n-- >8 --\n[PATCH] Teach gitlinks to ie_modified() and ce_modified_check_fs()\n\nThe ie_modified() function is the workhorse for refresh_cache_entry(),\ni.e. checking if an index entry that is stat-dirty actually has changes.\n\nAfter running quicker check to compare cached stat information with\nresults from the latest lstat(2) to answer \"has modification\" early, the\ncode goes on to check if there really is a change by comparing the staged\ndata with what is on the filesystem by asking ce_modified_check_fs().\nHowever, this function always said \"no change\" for any gitlinks that has a\ndirectory at the corresponding path.  This made ie_modified() to miss\nactual changes in the subproject.\n\nThe patch fixes this first by modifying an existing short-circuit logic\nbefore calling the ce_modified_check_fs() function.  It knows that for any\nfilesystem entity to which ie_match_stat() says its data has changed, if\nits cached size is nonzero then the contents cannot match, which is a\ncorrect optimization only for blob objects.  We teach gitlink objects to\nthis special case, as we already know that any gitlink that\nie_match_stat() says is modified is indeed modified at this point in the\ncodepath.\n\nWith the above change, we could leave ce_modified_check_fs() broken, but\nit also futureproofs the code by teaching it to use ce_compare_gitlink(),\ninstead of assuming (incorrectly) that any directory is unchanged.\n\nOriginally noticed by Alex Riesen on Cygwin.\n\nSigned-off-by: Junio C Hamano <gitster@pobox.com>\n---\n read-cache.c |   27 ++++++++++++++++++++++-----\n 1 files changed, 22 insertions(+), 5 deletions(-)\n\ndiff --git a/read-cache.c b/read-cache.c\nindex b5916b0..a940f8d 100644\n--- a/read-cache.c\n+++ b/read-cache.c\n@@ -152,7 +152,7 @@ static int ce_modified_check_fs(struct cache_entry *ce, struct stat *st)\n \t\tbreak;\n \tcase S_IFDIR:\n \t\tif (S_ISGITLINK(ce->ce_mode))\n-\t\t\treturn 0;\n+\t\t\treturn ce_compare_gitlink(ce) ? DATA_CHANGED : 0;\n \tdefault:\n \t\treturn TYPE_CHANGED;\n \t}\n@@ -192,6 +192,7 @@ static int ce_match_stat_basic(struct cache_entry *ce, struct stat *st)\n \t\t\tchanged |= TYPE_CHANGED;\n \t\tbreak;\n \tcase S_IFGITLINK:\n+\t\t/* We ignore most of the st_xxx fields for gitlinks */\n \t\tif (!S_ISDIR(st->st_mode))\n \t\t\tchanged |= TYPE_CHANGED;\n \t\telse if (ce_compare_gitlink(ce))\n@@ -298,11 +299,22 @@ int ie_modified(const struct index_state *istate,\n \tif (changed & (MODE_CHANGED | TYPE_CHANGED))\n \t\treturn changed;\n \n-\t/* Immediately after read-tree or update-index --cacheinfo,\n-\t * the length field is zero.  For other cases the ce_size\n-\t * should match the SHA1 recorded in the index entry.\n+\t/*\n+\t * Immediately after read-tree or update-index --cacheinfo,\n+\t * the length field is zero, as we have never even read the\n+\t * lstat(2) information once, and we cannot trust DATA_CHANGED\n+\t * returned by ie_match_stat() which in turn was returned by\n+\t * ce_match_stat_basic() to signal that the filesize of the\n+\t * blob changed.  We have to actually go to the filesystem to\n+\t * see if the contents match, and if so, should answer \"unchanged\".\n+\t *\n+\t * The logic does not apply to gitlinks, as ce_match_stat_basic()\n+\t * already has checked the actual HEAD from the filesystem in the\n+\t * subproject.  If ie_match_stat() already said it is different,\n+\t * then we know it is.\n \t */\n-\tif ((changed & DATA_CHANGED) && ce->ce_size != 0)\n+\tif ((changed & DATA_CHANGED) &&\n+\t    (S_ISGITLINK(ce->ce_mode) || ce->ce_size != 0))\n \t\treturn changed;\n \n \tchanged_fs = ce_modified_check_fs(ce, st);\n@@ -1331,6 +1343,11 @@ static void ce_smudge_racily_clean_entry(struct cache_entry *ce)\n \t * falsely clean entry due to touch-update-touch race, so we leave\n \t * everything else as they are.  We are called for entries whose\n \t * ce_mtime match the index file mtime.\n+\t *\n+\t * Note that this actually does not do much for gitlinks, for\n+\t * which ce_match_stat_basic() always goes to the actual\n+\t * contents.  The caller checks with is_racy_timestamp() which\n+\t * always says \"no\" for gitlinks, so we are not called for them ;-)\n \t */\n \tstruct stat st;\n \n"},{"id":"85434","messageId":"7vljzlhyt8.fsf@gitster.siamese.dyndns.org","threadId":"14708","inReplyTo":"7v4p69jefb.fsf@gitster.siamese.dyndns.org","subject":"Re: GIT 1.6.0-rc1","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2008-07-29T08:36:19Z","receivedAt":"2008-07-29T08:36:19Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Junio C Hamano <gitster@pobox.com> writes:\n\n>>> Junio C Hamano, Mon, Jul 28, 2008 08:44:52 +0200:\n>>>> Alex Riesen <raa.lkml@gmail.com> writes:\n>>>> \n>>>> > t2103-update-index-ignore-missing.sh still broken on Windows because\n>>>> > of stat.st_size being 0 for directories there.\n>>>> \n>>>> I recall we did not reach a useful conclusion of that discussion.\n>>>\n>>> Why isn't the proposed patch useful? (and would it be possible to make\n>>> the answer out of plain, small and short words?)\n>>\n>> Can you answer out of plain, small and short words why the proposed patch\n>> is correct without unwanted side effects, not just \"this seems to solve\n>> the particular issue for me but I don't know if it has unintended side\n>> effects\"?\n>\n> Ok, I took a deeper look at the codepaths involved.  Although it does work\n> around the issue, I do not think your patch alone is the \"correct\" one in\n> the longer term.\n>\n> It needs a bit of explanation, and the explanation won't be exactly\n> \"plain, small and short\", unfortunately.\n\nAlex, I ran the full test with this, but only on Linux boxes; obviously\nnot on any flavor of Windows.  I think it is correct, and the \"first line\nof defence\" fix is the same as your patch, so I'd assume it would work for\nyou as well.  But extra eyeballs are always appreciated.\n"},{"id":"85518","messageId":"20080729211745.GA3879@blimp.local","threadId":"14708","inReplyTo":"7vljzlhyt8.fsf@gitster.siamese.dyndns.org","subject":"Re: GIT 1.6.0-rc1","fromName":"Alex Riesen","fromEmail":"raa.lkml@gmail.com","sentAt":"2008-07-29T21:17:45Z","receivedAt":"2008-07-29T21:17:45Z","isPatch":false,"sender":{"key":"raa.lkml@gmail.com","avatar":"https://avatars.githubusercontent.com/u/324101?v=4"},"body":"Junio C Hamano, Tue, Jul 29, 2008 10:36:19 +0200:\n> Junio C Hamano <gitster@pobox.com> writes:\n> >\n> > Ok, I took a deeper look at the codepaths involved.  Although it does work\n> > around the issue, I do not think your patch alone is the \"correct\" one in\n> > the longer term.\n\nThought so. I just didn't know the code around\n\n> > It needs a bit of explanation, and the explanation won't be exactly\n> > \"plain, small and short\", unfortunately.\n> \n> Alex, I ran the full test with this, but only on Linux boxes; obviously\n> not on any flavor of Windows.  I think it is correct, and the \"first line\n> of defence\" fix is the same as your patch, so I'd assume it would work for\n> you as well.  But extra eyeballs are always appreciated.\n\nWell, it works on Cygwin too. And I had my eyeballs on the code\n(wondered first if it will cause more fs accesses than before: it\nwill, in the racy check. Which is correct, AFAICT)\n"},{"id":"85522","messageId":"7vmyk0bb5r.fsf@gitster.siamese.dyndns.org","threadId":"14708","inReplyTo":"20080729211745.GA3879@blimp.local","subject":"Re: GIT 1.6.0-rc1","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2008-07-29T22:03:44Z","receivedAt":"2008-07-29T22:03:44Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Alex Riesen <raa.lkml@gmail.com> writes:\n\n> Junio C Hamano, Tue, Jul 29, 2008 10:36:19 +0200:\n>> Junio C Hamano <gitster@pobox.com> writes:\n>> >\n>> > Ok, I took a deeper look at the codepaths involved.  Although it does work\n>> > around the issue, I do not think your patch alone is the \"correct\" one in\n>> > the longer term.\n>\n> Thought so. I just didn't know the code around\n>\n>> > It needs a bit of explanation, and the explanation won't be exactly\n>> > \"plain, small and short\", unfortunately.\n>> \n>> Alex, I ran the full test with this, but only on Linux boxes; obviously\n>> not on any flavor of Windows.  I think it is correct, and the \"first line\n>> of defence\" fix is the same as your patch, so I'd assume it would work for\n>> you as well.  But extra eyeballs are always appreciated.\n>\n> Well, it works on Cygwin too. And I had my eyeballs on the code\n> (wondered first if it will cause more fs accesses than before: it\n> will, in the racy check. Which is correct, AFAICT)\n\nI thought racy check won't even trigger for gitlinks, no?\n\nce_modified_check_fs() has 3 call sites:\n\n - the call site in ie_match_stat() is protected with is_racy_timestamp()\n   that is always false for gitlinks;\n\n - the call site in ie_modified() we just took care of in the current\n   thread;\n\n - the other call site is in ce_smudge_racily_clean_entry(), which is\n   called from write_index() but it also is protected with\n   is_racy_timestamp() that is always false for gitlinks.\n\n \n"},{"id":"85583","messageId":"20080730061012.GA4437@blimp.local","threadId":"14708","inReplyTo":"7vmyk0bb5r.fsf@gitster.siamese.dyndns.org","subject":"Re: GIT 1.6.0-rc1","fromName":"Alex Riesen","fromEmail":"raa.lkml@gmail.com","sentAt":"2008-07-30T06:10:12Z","receivedAt":"2008-07-30T06:10:12Z","isPatch":false,"sender":{"key":"raa.lkml@gmail.com","avatar":"https://avatars.githubusercontent.com/u/324101?v=4"},"body":"Junio C Hamano, Wed, Jul 30, 2008 00:03:44 +0200:\n> Alex Riesen <raa.lkml@gmail.com> writes:\n> >> Alex, I ran the full test with this, but only on Linux boxes; obviously\n> >> not on any flavor of Windows.  I think it is correct, and the \"first line\n> >> of defence\" fix is the same as your patch, so I'd assume it would work for\n> >> you as well.  But extra eyeballs are always appreciated.\n> >\n> > Well, it works on Cygwin too. And I had my eyeballs on the code\n> > (wondered first if it will cause more fs accesses than before: it\n> > will, in the racy check. Which is correct, AFAICT)\n> \n> I thought racy check won't even trigger for gitlinks, no?\n> \n\nI didn't know. But now, come to think of it, there wouldn't be much\npoint - the gitlinks are always compared by content, aren't they?\n\n> ce_modified_check_fs() has 3 call sites:\n> \n>  - the call site in ie_match_stat() is protected with is_racy_timestamp()\n>    that is always false for gitlinks;\n> \n>  - the call site in ie_modified() we just took care of in the current\n>    thread;\n> \n>  - the other call site is in ce_smudge_racily_clean_entry(), which is\n>    called from write_index() but it also is protected with\n>    is_racy_timestamp() that is always false for gitlinks.\n\nSo, the change in ce_modified_check_fs is not really needed, because\nthe gitlink case is never executed?\n"},{"id":"85584","messageId":"7vprov99te.fsf@gitster.siamese.dyndns.org","threadId":"14708","inReplyTo":"20080730061012.GA4437@blimp.local","subject":"Re: GIT 1.6.0-rc1","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2008-07-30T06:15:41Z","receivedAt":"2008-07-30T06:15:41Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Alex Riesen <raa.lkml@gmail.com> writes:\n\n> Junio C Hamano, Wed, Jul 30, 2008 00:03:44 +0200:\n>> Alex Riesen <raa.lkml@gmail.com> writes:\n>> >> Alex, I ran the full test with this, but only on Linux boxes; obviously\n>> >> not on any flavor of Windows.  I think it is correct, and the \"first line\n>> >> of defence\" fix is the same as your patch, so I'd assume it would work for\n>> >> you as well.  But extra eyeballs are always appreciated.\n>> >\n>> > Well, it works on Cygwin too. And I had my eyeballs on the code\n>> > (wondered first if it will cause more fs accesses than before: it\n>> > will, in the racy check. Which is correct, AFAICT)\n>> \n>> I thought racy check won't even trigger for gitlinks, no?\n>> \n>\n> I didn't know. But now, come to think of it, there wouldn't be much\n> point - the gitlinks are always compared by content, aren't they?\n>\n>> ce_modified_check_fs() has 3 call sites:\n>> \n>>  - the call site in ie_match_stat() is protected with is_racy_timestamp()\n>>    that is always false for gitlinks;\n>> \n>>  - the call site in ie_modified() we just took care of in the current\n>>    thread;\n>> \n>>  - the other call site is in ce_smudge_racily_clean_entry(), which is\n>>    called from write_index() but it also is protected with\n>>    is_racy_timestamp() that is always false for gitlinks.\n>\n> So, the change in ce_modified_check_fs is not really needed, because\n> the gitlink case is never executed?\n\nThat's what I meant by \"futureproofing\".\n"}]}