summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Merge git://repo.or.cz/git-guiJunio C Hamano2008-12-021-16/+27
|\ | | | | | | | | * git://repo.or.cz/git-gui: git-gui: Teach start_push_anywhere_action{} to notice when remote is a mirror.
| * git-gui: Teach start_push_anywhere_action{} to notice when remote is a mirror.Mark Burton2008-12-021-16/+27
| | | | | | | | | | | | | | | | | | When the destination repository is a mirror, this function goofed by still passing a refspec to git-push. Now it notices that the remote is a mirror and holds the refspec. Signed-off-by: Mark Burton <markb@ordern.com> Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
* | Merge git://git.kernel.org/pub/scm/gitk/gitkJunio C Hamano2008-12-022-17/+55
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | * git://git.kernel.org/pub/scm/gitk/gitk: gitk: Add a menu option to start git gui gitk: Make line origin search update the busy status gitk: Update German translation gitk: Fix bug in accessing undefined "notflag" variable gitk: Highlight only when search type is "containing:". gitk: Fix context menu items for generating diffs when in tree mode
| * | gitk: Add a menu option to start git guiAlexander Gavrilov2008-12-021-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Git gui already has menu commands to start gitk, and this makes the relation symmetric. [paulus@samba.org - changed "Git Gui" in the menu item to "git gui"] Signed-off-by: Alexander Gavrilov <angavrilov@gmail.com> Signed-off-by: Paul Mackerras <paulus@samba.org>
| * | gitk: Make line origin search update the busy statusAlexander Gavrilov2008-12-021-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently the 'show origin of this line' feature does not update the status field of the gitk window, so it is not evident that any processing is going on. It may seem at first that clicking the item had no effect. This commit adds calls to set and clear the busy status with an appropriate title, similar to other search commands. Signed-off-by: Alexander Gavrilov <angavrilov@gmail.com> Signed-off-by: Paul Mackerras <paulus@samba.org>
| * | gitk: Update German translationChristian Stimming2008-12-021-8/+43
| | | | | | | | | | | | | | | | | | | | | This takes into account the most recent po file merge. Signed-off-by: Christian Stimming <stimming@tuhh.de> Signed-off-by: Paul Mackerras <paulus@samba.org>
| * | gitk: Fix bug in accessing undefined "notflag" variablePaul Mackerras2008-12-021-5/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | As pointed out by Johannes Sixt and Alexander Gavrilov, commit 2958228430b63f2e38c55519d1f98d8d6d9e23f3 ("gitk: Fix switch statement in parseviewargs") exposed a latent bug in that $notflag was never initialized. Since it isn't used either, this removes it entirely. Signed-off-by: Paul Mackerras <paulus@samba.org>
| * | gitk: Highlight only when search type is "containing:".Paul Mackerras2008-12-021-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When the search type is "touching paths" or "adding/removing string", it's not very useful to highlight instances of the search string in the commit message, headline or author name, so this disables the highlighting in those cases. This was suggested by Mark Burton <markb@ordern.com>, but the implementation is different to his patch, which tested $gdttype at each place where $markingmatches was tested. Signed-off-by: Paul Mackerras <paulus@samba.org>
| * | gitk: Fix context menu items for generating diffs when in tree modePaul Mackerras2008-11-181-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, if you invoke the "diff this -> selected" or "diff selected -> this" and gitk is in "Tree" mode rather than "Patch" mode, the diff display pane will just show the header but not the actual diff, unless gitk has done the diff before and thus has the list of files that differ. This was because the logic in gettreediffline that checked whether we had moved on to doing something else checked the mode (Tree or Patch) before checking whether the ids we're diffing had changed. This fixes it. The new logic in gettreediffline is slightly hacky and relies on the fact that the Tree/Patch mode only applies when we're looking at a single commit, not at the diff between two commits. Signed-off-by: Paul Mackerras <paulus@samba.org>
* | | GIT 1.6.1-rc1v1.6.1-rc1Junio C Hamano2008-12-011-4/+15
| | | | | | | | | | | | Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | Include git-gui--askpass in git-gui RPM packageJunio C Hamano2008-12-011-0/+1
| | | | | | | | | | | | Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | Merge git://git.kernel.org/pub/scm/gitk/gitkJunio C Hamano2008-11-301-93/+157
|\ \ \ | |/ / | | | | | | | | | | | | | | | | | | * git://git.kernel.org/pub/scm/gitk/gitk: gitk: Avoid handling the Return key twice in Add Branch gitk: Show local changes properly when we have a path limit gitk: Fix switch statement in parseviewargs gitk: Index line[hnd]tag arrays by id rather than row number
| * | gitk: Avoid handling the Return key twice in Add BranchAlexander Gavrilov2008-11-181-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 63767d5fb8fe236d8fdeba44297ac925701b27a0. A similar change was made as part of commit 76f15947af7, that added bindings to all dialogs, and this duplication causes mkbrgo to be called twice, the second time after the window has been destroyed. As a result, an error window appears when the code tries to access widgets. Signed-off-by: Alexander Gavrilov <angavrilov@gmail.com> Signed-off-by: Paul Mackerras <paulus@samba.org>
| * | gitk: Show local changes properly when we have a path limitPaul Mackerras2008-11-181-22/+88
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since gitk looks for the HEAD commit to attach the fake commits for local changes to, we can miss out on seeing the fake commits if we have a path limit and the HEAD commit doesn't alter any of the files in the path limit. This fixes it by running git rev-list -1 $head -- $paths if we have a path limit, and taking the result of that as the commit to attach the fake commits to. This means that we can be attaching the fake commits to a different commit in each view, so we use a new $viewmainhead($view) for that. This also fixes a buglet where updatecommits would only fix up the fake commits if the HEAD changed since the last call to updatecommits, whereas it should fix them up if the HEAD has changed since this view was last created or updated. Signed-off-by: Paul Mackerras <paulus@samba.org>
| * | gitk: Fix switch statement in parseviewargsPaul Mackerras2008-11-181-11/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In Tcl, a comment in a switch command where a pattern would be expected doesn't do what one would expect, so this moves the comments inside the actions. Doing that shows up an extra "-" which this also removes. With this, --merge is now handled properly. Signed-off-by: Paul Mackerras <paulus@samba.org>
| * | gitk: Index line[hnd]tag arrays by id rather than row numberPaul Mackerras2008-11-151-59/+58
| | | | | | | | | | | | | | | | | | | | | | | | This simplifies things a bit and is better because ids are stable but row numbers aren't. It also means we can avoid one [rowofcommit] call. Signed-off-by: Paul Mackerras <paulus@samba.org>
* | | Merge git://repo.or.cz/git-guiJunio C Hamano2008-11-305-1533/+4243
|\ \ \ | | |/ | |/| | | | | | | | | | | | | | | | | | | * git://repo.or.cz/git-gui: git-gui: update Japanese translation git-gui: french translation update Updated Swedish translation (514t0f0u). git gui: update Italian translation Update Hungarian translation. 100% completed.
| * | git-gui: update Japanese translationNanako Shiraishi2008-11-261-294/+825
| | | | | | | | | | | | | | | Signed-off-by: Nanako Shiraishi <nanako3@lavabit.com> Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
| * | git-gui: french translation updateChristian Couder2008-11-231-297/+827
| | | | | | | | | | | | | | | Signed-off-by: Christian Couder <chriscool@tuxfamily.org> Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
| * | Updated Swedish translation (514t0f0u).Peter Krefting2008-11-211-310/+839
| | | | | | | | | | | | Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
| * | git gui: update Italian translationMichele Ballabio2008-11-191-295/+834
| | | | | | | | | | | | | | | Signed-off-by: Michele Ballabio <barra_cuda@katamail.com> Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
| * | Update Hungarian translation. 100% completed.Miklos Vajna2008-11-171-337/+918
| | | | | | | | | | | | | | | Signed-off-by: Miklos Vajna <vmiklos@frugalware.org> Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
* | | send-email: do not reverse the command line argumentsJunio C Hamano2008-11-302-1/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The loop picks elements from @ARGV one by one, sifts them into arguments meant for format-patch and the script itself, and pushes them to @files and @rev_list_opts arrays. Pick elements from @ARGV starting at the beginning using shift, instead of at the end using pop, as push appends them to the end of the array. Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | Merge branch 'maint'Junio C Hamano2008-11-302-1/+23
|\ \ \ | | | | | | | | | | | | | | | | | | | | * maint: Update draft release notes to 1.6.0.5 generate-cmdlist.sh: avoid selecting synopsis at wrong place
| * | | Update draft release notes to 1.6.0.5Junio C Hamano2008-11-301-0/+22
| | | | | | | | | | | | | | | | Signed-off-by: Junio C Hamano <gitster@pobox.com>
| * | | Merge branch 'st/maint-tag' into maintJunio C Hamano2008-11-302-7/+23
| |\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | * st/maint-tag: tag: Add more tests about mixing incompatible modes and options tag: Check that options are only allowed in the appropriate mode
| * \ \ \ Merge branch 'mk/maint-cg-push' into maintJunio C Hamano2008-11-303-5/+75
| |\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | * mk/maint-cg-push: git push: Interpret $GIT_DIR/branches in a Cogito compatible way
| * | | | | generate-cmdlist.sh: avoid selecting synopsis at wrong placeNguyễn Thái Ngọc Duy2008-11-301-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In "common" man pages there is luckily no "NAME" anywhere except at beginning of documents. If there is another "NAME", sed could mis-select it and lead to common-cmds.h corruption. So better nail it at beginning of line, which would reduce corruption chance. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | | | | Merge branch 'cc/bisect-skip'Junio C Hamano2008-11-271-1/+18
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | * cc/bisect-skip: bisect: teach "skip" to accept special arguments like "A..B"
| * | | | | | bisect: teach "skip" to accept special arguments like "A..B"Christian Couder2008-11-251-1/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The current "git bisect skip" syntax is "git bisect skip [<rev>...]" so it's already possible to skip a range of revisions using something like: $ git bisect skip $(git rev-list A..B) where A and B are the bounds of the range we want to skip. This patch teaches "git bisect skip" to accept: $ git bisect skip A..B as an abbreviation for the former command. This is done by checking each argument to see if it contains two dots one after the other ('..'), and by expending it using "git rev-list" if that is the case. Note that this patch will not make "git bisect skip" accept all that "git rev-list" accepts, as things like "^A B" for exemple will not work. But things like "A B..C D E F.. ..G H...I" should work as expected. Signed-off-by: Christian Couder <chriscool@tuxfamily.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | | | | | Merge branch 'js/mingw-rename-fix'Junio C Hamano2008-11-271-3/+12
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * js/mingw-rename-fix: compat/mingw.c: Teach mingw_rename() to replace read-only files
| * | | | | | | compat/mingw.c: Teach mingw_rename() to replace read-only filesJohannes Sixt2008-11-231-3/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On POSIX, rename() can replace files that are not writable. On Windows, however, read-only files cannot be replaced without additional efforts: We have to make the destination writable first. Since the situations where the destination is read-only are rare, we do not make the destination writable on every invocation, but only if the first try to rename a file failed with an "access denied" error. Signed-off-by: Johannes Sixt <j6t@kdbg.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | | | | | | Merge branch 'st/levenshtein'Junio C Hamano2008-11-271-1/+38
|\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * st/levenshtein: Document levenshtein.c Fix deletion of last character in levenshtein distance
| * | | | | | | | Document levenshtein.cJohannes Schindelin2008-11-231-0/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
| * | | | | | | | Fix deletion of last character in levenshtein distanceSamuel Tardieu2008-11-231-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Without this change, "git tags" will not suggest "git tag" (it will only suggest "git status"), and "git statusx" will not suggest anything. Signed-off-by: Samuel Tardieu <sam@rfc1149.net> Acked-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | | | | | | | Merge branch 'cr/remote-update-v'Junio C Hamano2008-11-271-2/+6
|\ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * cr/remote-update-v: git-remote: add verbose mode to git remote update
| * | | | | | | | | git-remote: add verbose mode to git remote updateCheng Renquan2008-11-181-2/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Pass the verbose mode parameter to the underlying fetch command. $ ./git remote -v update Updating origin From git://git.kernel.org/pub/scm/git/git = [up to date] html -> origin/html = [up to date] maint -> origin/maint = [up to date] man -> origin/man = [up to date] master -> origin/master = [up to date] next -> origin/next = [up to date] pu -> origin/pu = [up to date] todo -> origin/todo Signed-off-by: Cheng Renquan <crquan@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | | | | | | | | Merge branch 'rs/strbuf-expand'Junio C Hamano2008-11-279-204/+87
|\ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * rs/strbuf-expand: remove the unused files interpolate.c and interpolate.h daemon: deglobalize variable 'directory' daemon: inline fill_in_extra_table_entries() daemon: use strbuf_expand() instead of interpolate() merge-recursive: use strbuf_expand() instead of interpolate() add strbuf_expand_dict_cb(), a helper for simple cases
| * | | | | | | | | | remove the unused files interpolate.c and interpolate.hRené Scharfe2008-11-233-130/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx> Signed-off-by: Junio C Hamano <gitster@pobox.com>
| * | | | | | | | | | daemon: deglobalize variable 'directory'René Scharfe2008-11-231-10/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove the global variable 'directory' and pass it as a parameter of the two functions that use it instead, (almost) restoring their interface to how it was before 49ba83fb67d9e447b86953965ce5f949c6a93b81. Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx> Signed-off-by: Junio C Hamano <gitster@pobox.com>
| * | | | | | | | | | daemon: inline fill_in_extra_table_entries()René Scharfe2008-11-231-8/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Having fill_in_extra_table_entries() as a separate function has no advantage -- a function with no parameters and return values might as well be an anonymous block of code. Its name still refers to the table of interpolate() which has been removed earlier, so it's better to inline it at its only call site. Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx> Signed-off-by: Junio C Hamano <gitster@pobox.com>
| * | | | | | | | | | daemon: use strbuf_expand() instead of interpolate()René Scharfe2008-11-231-55/+54
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx> Signed-off-by: Junio C Hamano <gitster@pobox.com>
| * | | | | | | | | | merge-recursive: use strbuf_expand() instead of interpolate()René Scharfe2008-11-232-13/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx> Signed-off-by: Junio C Hamano <gitster@pobox.com>
| * | | | | | | | | | add strbuf_expand_dict_cb(), a helper for simple casesRené Scharfe2008-11-233-0/+28
| | |/ / / / / / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The new callback function strbuf_expand_dict_cb() can be used together with strbuf_expand() if there is only a small number of placeholders for static replacement texts. It expects its dictionary as an array of placeholder+value pairs as context parameter, terminated by an entry with the placeholder member set to NULL. The new helper is intended to aid converting the remaining calls of interpolate(). strbuf_expand() is smaller, more flexible and can be used to go faster than interpolate(), so it should replace the latter. Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | | | | | | | | Merge branch 'mv/clone-strbuf'Junio C Hamano2008-11-271-50/+59
|\ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * mv/clone-strbuf: builtin_clone: use strbuf in cmd_clone() builtin-clone: use strbuf in clone_local() and copy_or_link_directory() builtin-clone: use strbuf in guess_dir_name()
| * | | | | | | | | | builtin_clone: use strbuf in cmd_clone()Miklos Vajna2008-11-251-20/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Miklos Vajna <vmiklos@frugalware.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
| * | | | | | | | | | builtin-clone: use strbuf in clone_local() and copy_or_link_directory()Miklos Vajna2008-11-251-27/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Miklos Vajna <vmiklos@frugalware.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
| * | | | | | | | | | builtin-clone: use strbuf in guess_dir_name()Miklos Vajna2008-11-251-3/+3
| |/ / / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Miklos Vajna <vmiklos@frugalware.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | | | | | | | | Merge branch 'lt/preload-lstat'Junio C Hamano2008-11-279-10/+122
|\ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lt/preload-lstat: Fix index preloading for racy dirty case Add cache preload facility
| * | | | | | | | | | Fix index preloading for racy dirty caseLinus Torvalds2008-11-171-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In the threaded index preloading case, we must be sure to always use the CE_MATCH_RACY_IS_DIRTY flag when calling ie_match_stat(), in order to make sure that we only ever look at the stat() data, and don't try to do anything fancy. Because most of git internals are not thread-safe, and must not be called in parallel. Otherwise, what happens is that if the timestamps indicate that an entry _might_ be dirty, we might start actually comparing filesystem data with the object database. And we mustn't do that, because that would involve looking up and creating the object structure, and that whole code sequence with read_sha1_file() where we look up and add objects to the hashes is definitely not thread-safe. Nor do we want to add locking, because the whole point of the preload was to be simple and not affect anything else. With CE_MATCH_RACY_IS_DIRTY, we get what we wanted, and we'll just leave the hard cases well alone, to be done later in the much simpler serial case. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>