{"thread":{"id":"22301","subject":"What's cooking in git.git (Jan 2010, #06 draft)","startedAt":"2010-01-20T10:24:51Z","lastAt":"2010-01-21T09:31:18Z","messageCount":5,"participants":["Junio C Hamano","Johannes Sixt"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"132182","messageId":"7veill3wgc.fsf@alter.siamese.dyndns.org","threadId":"22301","inReplyTo":null,"subject":"What's cooking in git.git (Jan 2010, #06 draft)","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2010-01-20T10:24:51Z","receivedAt":"2010-01-20T10:24:51Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"This is a draft copy of the real one I would send out after my git\nWednesday is over.\n\nBut before that day begins, I need to go to sleep ;-)\n\n---\n\nHere are the topics that have been cooking.  Commits prefixed with '-' are\nonly in 'pu' while commits prefixed with '+' are in 'next'.  The ones\nmarked with '.' do not appear in any of the integration branches, but I am\nstill holding onto them.\n\n--------------------------------------------------\n[Graduated to \"master\"]\n\n* sr/gfi-options (2009-12-04) 7 commits\n  (merged to 'next' on 2010-01-10 at 8b305fb)\n + fast-import: add (non-)relative-marks feature\n + fast-import: allow for multiple --import-marks= arguments\n + fast-import: test the new option command\n + fast-import: add option command\n + fast-import: add feature command\n + fast-import: put marks reading in its own function\n + fast-import: put option parsing code in separate functions\n\n* tc/smart-http-restrict (2010-01-14) 5 commits\n  (merged to 'next' on 2010-01-16 at 71fc84c)\n + Test t5560: Fix test when run with dash\n  (merged to 'next' on 2010-01-06 at 82736cb)\n + Smart-http tests: Test http-backend without curl or a webserver\n + Smart-http tests: Break test t5560-http-backend into pieces\n + Smart-http tests: Improve coverage in test t5560\n + Smart-http: check if repository is OK to export before serving it\n\n* tc/clone-v-progress (2009-12-26) 4 commits\n  (merged to 'next' on 2010-01-10 at ec2bfd7)\n + clone: use --progress to force progress reporting\n + clone: set transport->verbose when -v/--verbose is used\n + git-clone.txt: reword description of progress behaviour\n + check stderr with isatty() instead of stdout when deciding to show progress\n\nPerhaps needs an entry in the Release Notes, but otherwise looked Ok.\n\n* jk/run-command-use-shell (2010-01-01) 8 commits\n  (merged to 'next' on 2010-01-10 at 7479e2a)\n + t4030, t4031: work around bogus MSYS bash path conversion\n + diff: run external diff helper with shell\n + textconv: use shell to run helper\n + editor: use run_command's shell feature\n + run-command: optimize out useless shell calls\n + run-command: convert simple callsites to use_shell\n + t0021: use $SHELL_PATH for the filter script\n + run-command: add \"use shell\" option\n\nShuffled the commits in the topic, following J6t's suggestion in\nhttp://thread.gmane.org/gmane.comp.version-control.git/136128\n\n* jn/makefile (2010-01-06) 4 commits\n  (merged to 'next' on 2010-01-10 at f5a5d42)\n + Makefile: consolidate .FORCE-* targets\n + Makefile: learn to generate listings for targets requiring special flags\n + Makefile: use target-specific variable to pass flags to cc\n + Makefile: regenerate assembler listings when asked\n\n* jc/maint-1.6.1-checkout-m-custom-merge (2010-01-06) 1 commit\n  (merged to 'next' on 2010-01-10 at df14116)\n + checkout -m path: fix recreating conflicts\n\n* jh/commit-status (2010-01-13) 2 commits\n  (merged to 'next' on 2010-01-13 at 0905d59)\n + t7502: test commit.status, --status and --no-status\n + commit: support commit.status, --status, and --no-status\n\nI have already given ample time for people to react, but ended up getting\ntired of waiting for tests to materialize and doing it myself, as I want\nto close merge window for 1.7.0-rc0 by the end of next week to have the\nfinal release early next month.\n\n* tc/test-locate-httpd (2010-01-02) 1 commit\n  (merged to 'next' on 2010-01-06 at 9d913e5)\n + t/lib-http.sh: Restructure finding of default httpd location\n\n* js/windows (2010-01-15) 7 commits\n - Do not use date.c:tm_to_time_t() from compat/mingw.c\n - MSVC: Windows-native implementation for subset of Pthreads API\n - MSVC: Fix an \"incompatible pointer types\" compiler warning\n - Windows: avoid the \"dup dance\" when spawning a child process\n - Windows: simplify the pipe(2) implementation\n - Windows: boost startup by avoiding a static dependency on shell32.dll\n - Windows: disable Python\n\n* dp/maint-1.6.5-fast-import-non-commit-tag (2010-01-14) 1 commit\n  (merged to 'next' on 2010-01-16 at f95ea8e)\n + fast-import: tag may point to any object type\n\n* nd/include-termios-for-osol (2010-01-11) 1 commit\n  (merged to 'next' on 2010-01-16 at 3160c76)\n + Add missing #include to support TIOCGWINSZ on Solaris\n\n* pc/uninteresting-submodule-disappear-upon-switch-branches (2010-01-11) 1 commit\n  (merged to 'next' on 2010-01-16 at b06ca1a)\n + Remove empty directories when checking out a commit with fewer submodules\n\nInstead of using unlink(2) that will never succeed, use rmdir(2) to remove\nan empty directory, knowing that this won't harm a populated directory.\n\n* jc/rerere (2009-12-04) 1 commit\n  (merged to 'next' on 2010-01-10 at e295b7f)\n + Teach --[no-]rerere-autoupdate option to merge, revert and friends\n\n--------------------------------------------------\n[New Topics]\n\n* jc/conflict-marker-size (2010-01-16) 8 commits\n  (merged to 'next' on 2010-01-18 at f1f6023)\n + rerere: honor conflict-marker-size attribute\n + rerere: prepare for customizable conflict marker length\n + conflict-marker-size: new attribute\n + rerere: use ll_merge() instead of using xdl_merge()\n + merge-tree: use ll_merge() not xdl_merge()\n + xdl_merge(): allow passing down marker_size in xmparam_t\n + xdl_merge(): introduce xmparam_t for merge specific parameters\n + git_attr(): fix function signature\n (this branch uses jc/cache-unmerge.)\n\n* ag/maint-apply-too-large-p (2010-01-17) 1 commit\n  (merged to 'next' on 2010-01-18 at 8bd106a)\n + builtin-apply.c: Skip filenames without enough components\n\n* il/rev-namespace (2010-01-19) 2 commits\n  (merged to 'next' on 2010-01-19 at 2dbc665)\n + Fix errors in t6018\n  (merged to 'next' on 2010-01-18 at 3e68978)\n + rev-parse --namespace\n\nThis probably will be dropped and replaced with the --glob one, perhaps\nwith minor tweaks.\n\n* jc/grep-author-all-match-implicit (2010-01-17) 1 commit\n - \"log --author=me --grep=it\" should find intersection, not union\n\n* ag/patch-header-verify (2010-01-18) 1 commit\n  (merged to 'next' on 2010-01-18 at 2cd0ddc)\n + builtin-apply.c: fix the --- and +++ header filename consistency check\n\n* il/branch-set-upstream (2010-01-18) 2 commits\n  (merged to 'next' on 2010-01-18 at b9b0993)\n + branch: warn and refuse to set a branch as a tracking branch of itself.\n + Add branch --set-upstream\n\n* il/remote-updates (2010-01-18) 1 commit\n  (merged to 'next' on 2010-01-18 at 5c3e805)\n + Add git remote set-url\n\n* bw/cvsimport (2010-01-19) 3 commits\n  (merged to 'next' on 2010-01-19 at 63f4c8d)\n + cvsimport: standarize system() calls to external git tools\n + cvsimport: standarize open() calls to external git tools\n + cvsimport: modernize callouts to git subcommands\n\n* jc/checkout-merge-base (2010-01-19) 1 commit\n  (merged to 'next' on 2010-01-19 at 3665110)\n + Fix \"checkout A...\" synonym for \"checkout A...HEAD\" on Windows\n\n* jc/maint-refresh-index-is-optional-for-status (2010-01-19) 1 commit\n - status: don't require the repository to be writable\n\n--------------------------------------------------\n[Will merge to 'master' soon unless somebody complains]\n\n* rr/core-tutorial (2010-01-16) 1 commit\n  (merged to 'next' on 2010-01-16 at d9dd8bd)\n + Documentation: Update git core tutorial clarifying reference to scripts\n\n* il/push-set-upstream (2010-01-16) 1 commit\n  (merged to 'next' on 2010-01-16 at e3a7a60)\n + Add push --set-upstream\n\n* jk/warn-author-committer-after-commit (2010-01-17) 6 commits\n  (merged to 'next' on 2010-01-17 at c2bb7fd)\n + user_ident_sufficiently_given(): refactor the logic to be usable from elsewhere\n + commit.c::print_summary: do not release the format string too early\n  (merged to 'next' on 2010-01-16 at f22c077)\n + commit: allow suppression of implicit identity advice\n + commit: show interesting ident information in summary\n + strbuf: add strbuf_addbuf_percentquote\n + strbuf_expand: convert \"%%\" to \"%\"\n\n* jc/ident (2010-01-17) 5 commits\n  (merged to 'next' on 2010-01-19 at 9fba1c0)\n + ident.c: replace fprintf with fputs to suppress compiler warning\n  (merged to 'next' on 2010-01-17 at 625670d)\n + user_ident_sufficiently_given(): refactor the logic to be usable from elsewhere\n + ident.c: treat $EMAIL as giving user.email identity explicitly\n  (merged to 'next' on 2010-01-10 at f1f9ded)\n + ident.c: check explicit identity for name and email separately\n + ident.c: remove unused variables\n\n* tr/http-push-ref-status (2010-01-08) 6 commits\n  (merged to 'next' on 2010-01-16 at 7e872ac)\n + transport-helper.c::push_refs(): emit \"no refs\" error message\n + transport-helper.c::push_refs(): ignore helper-reported status if ref is not to be pushed\n + transport.c::transport_push(): make ref status affect return value\n + refactor ref status logic for pushing\n + t5541-http-push.sh: add test for unmatched, non-fast-forwarded refs\n + t5541-http-push.sh: add tests for non-fast-forward pushes\n\n* bk/fix-relative-gitdir-file (2010-01-08) 2 commits\n  (merged to 'next' on 2010-01-16 at cc4ae57)\n + Handle relative paths in submodule .git files\n + Test update-index for a gitlink to a .git file\n\n* sd/cd-p-show-toplevel (2010-01-12) 2 commits\n  (merged to 'next' on 2010-01-16 at 57d6d31)\n + Use $(git rev-parse --show-toplevel) in cd_to_toplevel().\n + Add 'git rev-parse --show-toplevel' option.\n\nAvoid having to use \"cd -P\" that may not be available on some platforms'\nshells.\n\n* jc/symbol-static (2010-01-18) 17 commits\n  (merged to 'next' on 2010-01-18 at d063267)\n + Replace parse_blob() with an explanatory comment\n + symlinks.c: remove unused functions\n + object.c: remove unused functions\n + strbuf.c: remove unused function\n + sha1_file.c: remove unused function\n + mailmap.c: remove unused function\n  (merged to 'next' on 2010-01-17 at d7346b1)\n + utf8.c: mark file-local function static\n + submodule.c: mark file-local function static\n + quote.c: mark file-local function static\n + remote-curl.c: mark file-local function static\n + read-cache.c: mark file-local functions static\n + parse-options.c: mark file-local function static\n + entry.c: mark file-local function static\n + http.c: mark file-local functions static\n + pretty.c: mark file-local function static\n + builtin-rev-list.c: mark file-local function static\n + bisect.c: mark file-local function static\n\nMark file-local symbols \"static\", and remove unused functions.\n\n--------------------------------------------------\n[Will merge to 'master' after a bit more cooking in 'next']\n\n* nd/status-partial-refresh (2010-01-17) 2 commits\n  (merged to 'next' on 2010-01-19 at 64f0c0b)\n + rm: only refresh entries that we may touch\n  (merged to 'next' on 2010-01-16 at f77bc8f)\n + status: only touch path we may need to check\n\n* mh/rebase-fixup (2010-01-14) 23 commits\n  (merged to 'next' on 2010-01-16 at 7ccb228)\n + rebase -i: Retain user-edited commit messages after squash/fixup conflicts\n + t3404: Set up more of the test repo in the \"setup\" step\n + rebase -i: For fixup commands without squashes, do not start editor\n + rebase -i: Change function make_squash_message into update_squash_message\n + rebase -i: Extract function do_with_author\n + rebase -i: Handle the author script all in one place in do_next\n + rebase -i: Extract a function \"commit_message\"\n + rebase -i: Simplify commit counting for generated commit messages\n + rebase -i: Improve consistency of commit count in generated commit messages\n + t3404: Test the commit count in commit messages generated by \"rebase -i\"\n + rebase -i: Introduce a constant AMEND\n + rebase -i: Introduce a constant AUTHOR_SCRIPT\n + rebase -i: Document how temporary files are used\n + rebase -i: Use symbolic constant $MSG consistently\n + rebase -i: Use \"test -n\" instead of \"test ! -z\"\n + rebase -i: Inline expression\n + rebase -i: Remove dead code\n + rebase -i: Make the condition for an \"if\" more transparent\n  (merged to 'next' on 2010-01-12 at e84eab0)\n + rebase-i: Ignore comments and blank lines in peek_next_command\n + lib-rebase: Allow comments and blank lines to be added to the rebase script\n + lib-rebase: Provide clearer debugging info about what the editor did\n + Add a command \"fixup\" to rebase --interactive\n + t3404: Use test_commit to set up test repository\n (this branch is used by ns/rebase-auto-squash.)\n\n* ns/rebase-auto-squash (2009-12-08) 1 commit\n  (merged to 'next' on 2010-01-06 at da4e2f5)\n + rebase -i --autosquash: auto-squash commits\n (this branch uses mh/rebase-fixup.)\n\n* da/difftool (2010-01-15) 10 commits\n  (merged to 'next' on 2010-01-16 at 609f0da)\n + difftool: Update copyright notices to list each year separately\n + difftool: Use eval to expand '--extcmd' expressions\n + difftool: Add '-x' and as an alias for '--extcmd'\n + t7800-difftool.sh: Simplify the --extcmd test\n  (merged to 'next' on 2010-01-10 at 749c870)\n + git-diff.txt: Link to git-difftool\n + difftool: Allow specifying unconfigured commands with --extcmd\n + difftool--helper: Remove use of the GIT_MERGE_TOOL variable\n + difftool--helper: Update copyright and remove distracting comments\n  (merged to 'next' on 2010-01-06 at e957395)\n + git-difftool: Add '--gui' for selecting a GUI tool\n + t7800-difftool: Set a bogus tool for use by tests\n\n* mm/conflict-advice (2010-01-12) 1 commit\n  (merged to 'next' on 2010-01-16 at b83be11)\n + Be more user-friendly when refusing to do something because of conflict.\n\n* jc/maint-strbuf-add-fix-doubling (2010-01-12) 1 commit\n  (merged to 'next' on 2010-01-16 at 5959eee)\n + strbuf_addbuf(): allow passing the same buf to dst and src\n\n* jc/maint-1.6.4-grep-lookahead (2010-01-10) 1 commit\n  (merged to 'next' on 2010-01-13 at 20f8f4b)\n + grep: optimize built-in grep by skipping lines that do not hit\n (this branch is used by jc/grep-lookahead and jc/maint-grep-lookahead.)\n\nOptimize the \"line-by-line\" internal grep by skiping en masse over lines\nthat cannot possibly match.\n\n* jc/maint-grep-lookahead (2010-01-12) 0 commits\n (this branch uses jc/maint-1.6.4-grep-lookahead; is used by jc/grep-lookahead.)\n\nEarly conflict resolution for the above for recent git.\n\n* jc/grep-lookahead (2010-01-15) 4 commits\n  (merged to 'next' on 2010-01-17 at 4a5be2d)\n + grep --no-index: allow use of \"git grep\" outside a git repository\n + grep: prepare to run outside of a work tree\n  (merged to 'next' on 2010-01-13 at 20f8f4b)\n + grep: rip out pessimization to use fixmatch()\n + grep: rip out support for external grep\n (this branch uses jc/maint-1.6.4-grep-lookahead and jc/maint-grep-lookahead.)\n\n* jl/submodule-diff (2010-01-18) 4 commits\n - Performance optimization for detection of modified submodules\n  (merged to 'next' on 2010-01-17 at 525075b)\n + git status: Show uncommitted submodule changes too when enabled\n  (merged to 'next' on 2010-01-16 at 0a99e3c)\n + Teach diff that modified submodule directory is dirty\n + Show submodules as modified when they contain a dirty work tree\n\n* jc/ls-files-ignored-pathspec (2010-01-08) 4 commits\n  (merged to 'next' on 2010-01-16 at d36016a)\n + ls-files: fix overeager pathspec optimization\n + read_directory(): further split treat_path()\n + read_directory_recursive(): refactor handling of a single path into a separate function\n + t3001: test ls-files -o ignored/dir\n\n* js/exec-error-report (2010-01-12) 4 commits\n  (merged to 'next' on 2010-01-16 at 0e28d02)\n + Improve error message when a transport helper was not found\n + start_command: detect execvp failures early\n + run-command: move wait_or_whine earlier\n + start_command: report child process setup errors to the parent's stderr\n\n* jc/fix-tree-walk (2009-09-14) 7 commits\n  (merged to 'next' on 2010-01-13 at 1c01b87)\n + read-tree --debug-unpack\n + unpack-trees.c: look ahead in the index\n + unpack-trees.c: prepare for looking ahead in the index\n + Aggressive three-way merge: fix D/F case\n + traverse_trees(): handle D/F conflict case sanely\n + more D/F conflict tests\n + tests: move convenience regexp to match object names to test-lib.sh\n\nResurrected from \"Ejected\" category.  This is fix for a tricky codepath\nand testing and improving before it hits 'master' is greatly appreciated.\n(I have been using this in my private build for some time).\n\n* jc/cache-unmerge (2009-12-25) 9 commits\n  (merged to 'next' on 2010-01-13 at 2290c44)\n + rerere forget path: forget recorded resolution\n + rerere: refactor rerere logic to make it independent from I/O\n + rerere: remove silly 1024-byte line limit\n + resolve-undo: teach \"update-index --unresolve\" to use resolve-undo info\n + resolve-undo: \"checkout -m path\" uses resolve-undo information\n + resolve-undo: allow plumbing to clear the information\n + resolve-undo: basic tests\n + resolve-undo: record resolved conflicts in a new index extension section\n + builtin-merge.c: use standard active_cache macros\n (this branch is used by jc/conflict-marker-size.)\n\n* ap/merge-backend-opts (2008-07-18) 7 commits\n  (merged to 'next' on 2010-01-18 at cb1f6b7)\n + Document that merge strategies can now take their own options\n + Extend merge-subtree tests to test -Xsubtree=dir.\n + Make \"subtree\" part more orthogonal to the rest of merge-recursive.\n + pull: Fix parsing of -X<option>\n + Teach git-pull to pass -X<option> to git-merge\n + git merge -X<option>\n + git-merge-file --ours, --theirs\n\n--------------------------------------------------\n[Cooking]\n\n* js/refer-upstream (2010-01-19) 3 commits\n - Teach @{upstream} syntax to strbuf_branchanme()\n - t1506: more test for @{upstream} syntax\n - Introduce <branch>@{upstream} notation\n\nUpdated to teach the new syntax to commands like \"checkout\" and \"merge\"\nthat want to behave better when they know what were given was a branch\nname, not a random SHA-1 or a full refname.\n\n* jh/notes (2010-01-17) 23 commits\n - builtin-gc: Teach the new --notes option to garbage-collect notes\n - Notes API: gc_notes(): Prune notes that belong to non-existing objects\n - t3305: Verify that removing notes triggers automatic fanout consolidation\n - builtin-notes: Teach -d option for deleting existing notes\n - Teach builtin-notes to remove empty notes\n - Teach notes code to properly preserve non-notes in the notes tree\n - t3305: Verify that adding many notes with git-notes triggers increased fanout\n - t3301: Verify successful annotation of non-commits\n - Builtin-ify git-notes\n - Refactor notes concatenation into a flexible interface for combining notes\n - Notes API: Allow multiple concurrent notes trees with new struct notes_tree\n - Notes API: write_notes_tree(): Store the notes tree in the database\n - Notes API: for_each_note(): Traverse the entire notes tree with a callback\n - Notes API: get_note(): Return the note annotating the given object\n - Notes API: remove_note(): Remove note objects from the notes tree structure\n - Notes API: add_note(): Add note objects to the internal notes tree structure\n - Notes API: init_notes(): Initialize the notes tree from the given notes ref\n - Add tests for checking correct handling of $GIT_NOTES_REF and core.notesRef\n - Notes API: get_commit_notes() -> format_note() + remove the commit restriction\n - Minor non-functional fixes to notes.c\n  (merged to 'next' on 2010-01-02 at ae42130)\n + Add more testcases to test fast-import of notes\n + Rename t9301 to t9350, to make room for more fast-import tests\n + fast-import: Proper notes tree manipulation\n\nUpdated with a re-roll.\n\n* jh/gitweb-cached (2010-01-13) 9 commits\n - gitweb: File based caching layer (from git.kernel.org)\n - gitweb: Convert output to using indirect file handle\n - gitweb: cleanup error message produced by undefined $site_header\n - gitweb: add a get function to compliment print_sort_th\n - gitweb: add a get function to compliment print_local_time\n - gitweb: Makefile improvements\n - gitweb: Add option to force version match\n - gitweb: change die_error to take \"extra\" argument for extended die information\n - gitweb: Load checking\n\nReplaced with a re-roll.  Update to t9500 is probably needed.\n\n* jc/branch-d (2009-12-29) 1 commit\n  (merged to 'next' on 2010-01-10 at 61a14b7)\n + branch -d: base the \"already-merged\" safety on the branch it merges with\n"},{"id":"132191","messageId":"4B56F916.7090503@viscovery.net","threadId":"22301","inReplyTo":"7veill3wgc.fsf@alter.siamese.dyndns.org","subject":"Re: What's cooking in git.git (Jan 2010, #06 draft)","fromName":"Johannes Sixt","fromEmail":"j.sixt@viscovery.net","sentAt":"2010-01-20T12:37:42Z","receivedAt":"2010-01-20T12:37:42Z","isPatch":false,"sender":{"key":"j6t@kdbg.org","avatar":"https://avatars.githubusercontent.com/u/14810926?v=4"},"body":"Junio C Hamano schrieb:\n> * jc/symbol-static (2010-01-18) 17 commits\n>   (merged to 'next' on 2010-01-18 at d063267)\n\nNow that compat/mingw.c does not call tm_to_time_t anymore, you could dig\nup the patch that touches date.c from your reflog and put it back in this\nseries. I think that nobody minds that the topic alone will not build on\nWindows, as long as it builds when it is merged to master.\n\n> * jc/cache-unmerge (2009-12-25) 9 commits\n>   (merged to 'next' on 2010-01-13 at 2290c44)\n>  + rerere forget path: forget recorded resolution\n\nHeads up: there is something fishy with the pathspec on Windows (foo\\bar\nis not recognized as foo/bar, but it should be). Will investigate.\n\n-- Hannes\n"},{"id":"132282","messageId":"4B580F14.5060105@viscovery.net","threadId":"22301","inReplyTo":"4B56F916.7090503@viscovery.net","subject":"[PATCH] Make 'rerere forget' work from a subdirectory.","fromName":"Johannes Sixt","fromEmail":"j.sixt@viscovery.net","sentAt":"2010-01-21T08:23:48Z","receivedAt":"2010-01-21T08:23:48Z","isPatch":true,"sender":{"key":"j6t@kdbg.org","avatar":"https://avatars.githubusercontent.com/u/14810926?v=4"},"body":"From: Johannes Sixt <j6t@kdbg.org>\n\nIt forgot to apply the prefix to the paths given on the command line.\n\nSigned-off-by: Johannes Sixt <j6t@kdbg.org>\n---\n Johannes Sixt schrieb:\n > Junio C Hamano schrieb:\n >> * jc/cache-unmerge (2009-12-25) 9 commits\n >>   (merged to 'next' on 2010-01-13 at 2290c44)\n >>  + rerere forget path: forget recorded resolution\n >\n > Heads up: there is something fishy with the pathspec on Windows (foo\\bar\n > is not recognized as foo/bar, but it should be). Will investigate.\n\n A call get_pathspec is necessary, which applies the prefix and also\n converts Windows's backslashes to forward-slashes.\n\n -- Hannes\n\n builtin-rerere.c |    6 ++++--\n 1 files changed, 4 insertions(+), 2 deletions(-)\n\ndiff --git a/builtin-rerere.c b/builtin-rerere.c\nindex 25f507a..34f9ace 100644\n--- a/builtin-rerere.c\n+++ b/builtin-rerere.c\n@@ -120,8 +120,10 @@ int cmd_rerere(int argc, const char **argv, const char *prefix)\n \tif (argc < 2)\n \t\treturn rerere(flags);\n\n-\tif (!strcmp(argv[1], \"forget\"))\n-\t\treturn rerere_forget(argv + 2);\n+\tif (!strcmp(argv[1], \"forget\")) {\n+\t\tconst char **pathspec = get_pathspec(prefix, argv + 2);\n+\t\treturn rerere_forget(pathspec);\n+\t}\n\n \tfd = setup_rerere(&merge_rr, flags);\n \tif (fd < 0)\n-- \n1.6.6.1.1388.g96b4\n"},{"id":"132283","messageId":"7v7hrbx31c.fsf@alter.siamese.dyndns.org","threadId":"22301","inReplyTo":"4B580F14.5060105@viscovery.net","subject":"Re: [PATCH] Make 'rerere forget' work from a subdirectory.","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2010-01-21T08:42:07Z","receivedAt":"2010-01-21T08:42:07Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Johannes Sixt <j.sixt@viscovery.net> writes:\n\n> From: Johannes Sixt <j6t@kdbg.org>\n>\n> It forgot to apply the prefix to the paths given on the command line.\n>\n> Signed-off-by: Johannes Sixt <j6t@kdbg.org>\n\nThanks; will squash this in (which fails without and passes with your patch). \n\n t/t2030-unresolve-info.sh |   71 +++++++++++++++++++++++++++++++--------------\n 1 files changed, 49 insertions(+), 22 deletions(-)\n\ndiff --git a/t/t2030-unresolve-info.sh b/t/t2030-unresolve-info.sh\nindex a38bd6d..cb7effe 100755\n--- a/t/t2030-unresolve-info.sh\n+++ b/t/t2030-unresolve-info.sh\n@@ -36,21 +36,22 @@ prime_resolve_undo () {\n \ttest_must_fail git merge third^0 &&\n \techo merge does not leave anything &&\n \tcheck_resolve_undo empty &&\n-\techo different >file &&\n-\tgit add file &&\n+\techo different >fi/le &&\n+\tgit add fi/le &&\n \techo resolving records &&\n-\tcheck_resolve_undo recorded file initial:file second:file third:file\n+\tcheck_resolve_undo recorded fi/le initial:fi/le second:fi/le third:fi/le\n }\n \n test_expect_success setup '\n-\ttest_commit initial file first &&\n+\tmkdir fi &&\n+\ttest_commit initial fi/le first &&\n \tgit branch side &&\n \tgit branch another &&\n-\ttest_commit second file second &&\n+\ttest_commit second fi/le second &&\n \tgit checkout side &&\n-\ttest_commit third file third &&\n+\ttest_commit third fi/le third &&\n \tgit checkout another &&\n-\ttest_commit fourth file fourth &&\n+\ttest_commit fourth fi/le fourth &&\n \tgit checkout master\n '\n \n@@ -59,7 +60,7 @@ test_expect_success 'add records switch clears' '\n \ttest_tick &&\n \tgit commit -m merged &&\n \techo committing keeps &&\n-\tcheck_resolve_undo kept file initial:file second:file third:file &&\n+\tcheck_resolve_undo kept fi/le initial:fi/le second:fi/le third:fi/le &&\n \tgit checkout second^0 &&\n \techo switching clears &&\n \tcheck_resolve_undo cleared\n@@ -70,15 +71,15 @@ test_expect_success 'rm records reset clears' '\n \ttest_tick &&\n \tgit commit -m merged &&\n \techo committing keeps &&\n-\tcheck_resolve_undo kept file initial:file second:file third:file &&\n+\tcheck_resolve_undo kept fi/le initial:fi/le second:fi/le third:fi/le &&\n \n \techo merge clears upfront &&\n \ttest_must_fail git merge fourth^0 &&\n \tcheck_resolve_undo nuked &&\n \n-\tgit rm -f file &&\n+\tgit rm -f fi/le &&\n \techo resolving records &&\n-\tcheck_resolve_undo recorded file initial:file HEAD:file fourth:file &&\n+\tcheck_resolve_undo recorded fi/le initial:fi/le HEAD:fi/le fourth:fi/le &&\n \n \tgit reset --hard &&\n \techo resetting discards &&\n@@ -90,7 +91,7 @@ test_expect_success 'plumbing clears' '\n \ttest_tick &&\n \tgit commit -m merged &&\n \techo committing keeps &&\n-\tcheck_resolve_undo kept file initial:file second:file third:file &&\n+\tcheck_resolve_undo kept fi/le initial:fi/le second:fi/le third:fi/le &&\n \n \techo plumbing clear &&\n \tgit update-index --clear-resolve-undo &&\n@@ -100,7 +101,7 @@ test_expect_success 'plumbing clears' '\n test_expect_success 'add records checkout -m undoes' '\n \tprime_resolve_undo &&\n \tgit diff HEAD &&\n-\tgit checkout --conflict=merge file &&\n+\tgit checkout --conflict=merge fi/le &&\n \techo checkout used the record and removed it &&\n \tcheck_resolve_undo removed &&\n \techo the index and the work tree is unmerged again &&\n@@ -110,12 +111,12 @@ test_expect_success 'add records checkout -m undoes' '\n \n test_expect_success 'unmerge with plumbing' '\n \tprime_resolve_undo &&\n-\tgit update-index --unresolve file &&\n+\tgit update-index --unresolve fi/le &&\n \tgit ls-files -u >actual &&\n \ttest $(wc -l <actual) = 3\n '\n \n-test_expect_success 'rerere and rerere --forget' '\n+test_expect_success 'rerere and rerere forget' '\n \tmkdir .git/rr-cache &&\n \tprime_resolve_undo &&\n \techo record the resolution &&\n@@ -123,20 +124,46 @@ test_expect_success 'rerere and rerere --forget' '\n \trerere_id=$(cd .git/rr-cache && echo */postimage) &&\n \trerere_id=${rerere_id%/postimage} &&\n \ttest -f .git/rr-cache/$rerere_id/postimage &&\n-\tgit checkout -m file &&\n+\tgit checkout -m fi/le &&\n \techo resurrect the conflict &&\n-\tgrep \"^=======\" file &&\n+\tgrep \"^=======\" fi/le &&\n \techo reresolve the conflict &&\n \tgit rerere &&\n-\ttest \"z$(cat file)\" = zdifferent &&\n+\ttest \"z$(cat fi/le)\" = zdifferent &&\n \techo register the resolution again &&\n-\tgit add file &&\n-\tcheck_resolve_undo kept file initial:file second:file third:file &&\n+\tgit add fi/le &&\n+\tcheck_resolve_undo kept fi/le initial:fi/le second:fi/le third:fi/le &&\n \ttest -z \"$(git ls-files -u)\" &&\n-\tgit rerere forget file &&\n+\tgit rerere forget fi/le &&\n \t! test -f .git/rr-cache/$rerere_id/postimage &&\n \ttr \"\\0\" \"\\n\" <.git/MERGE_RR >actual &&\n-\techo \"$rerere_id\tfile\" >expect &&\n+\techo \"$rerere_id\tfi/le\" >expect &&\n+\ttest_cmp expect actual\n+'\n+\n+test_expect_success 'rerere and rerere forget (subdirectory)' '\n+\trm -fr .git/rr-cache &&\n+\tmkdir .git/rr-cache &&\n+\tprime_resolve_undo &&\n+\techo record the resolution &&\n+\t(cd fi && git rerere) &&\n+\trerere_id=$(cd .git/rr-cache && echo */postimage) &&\n+\trerere_id=${rerere_id%/postimage} &&\n+\ttest -f .git/rr-cache/$rerere_id/postimage &&\n+\t(cd fi && git checkout -m le) &&\n+\techo resurrect the conflict &&\n+\tgrep \"^=======\" fi/le &&\n+\techo reresolve the conflict &&\n+\t(cd fi && git rerere) &&\n+\ttest \"z$(cat fi/le)\" = zdifferent &&\n+\techo register the resolution again &&\n+\t(cd fi && git add le) &&\n+\tcheck_resolve_undo kept fi/le initial:fi/le second:fi/le third:fi/le &&\n+\ttest -z \"$(git ls-files -u)\" &&\n+\t(cd fi && git rerere forget le) &&\n+\t! test -f .git/rr-cache/$rerere_id/postimage &&\n+\ttr \"\\0\" \"\\n\" <.git/MERGE_RR >actual &&\n+\techo \"$rerere_id\tfi/le\" >expect &&\n \ttest_cmp expect actual\n '\n \n"},{"id":"132287","messageId":"4B581EE6.70601@viscovery.net","threadId":"22301","inReplyTo":"7v7hrbx31c.fsf@alter.siamese.dyndns.org","subject":"Re: [PATCH] Make 'rerere forget' work from a subdirectory.","fromName":"Johannes Sixt","fromEmail":"j.sixt@viscovery.net","sentAt":"2010-01-21T09:31:18Z","receivedAt":"2010-01-21T09:31:18Z","isPatch":true,"sender":{"key":"j6t@kdbg.org","avatar":"https://avatars.githubusercontent.com/u/14810926?v=4"},"body":"Junio C Hamano schrieb:\n> Thanks; will squash this in (which fails without and passes with your patch). \n\nThanks; it catches the breakage and verifies the fix here on Windows\nas well.\n\n-- Hannes\n"}]}