{"thread":{"id":"16928","subject":"What's cooking in git.git (Dec 2008, #04; Mon, 29)","startedAt":"2008-12-30T20:59:25Z","lastAt":"2009-01-04T11:18:58Z","messageCount":7,"participants":["Junio C Hamano","Jakub Narebski","Miklos Vajna","Christian Couder"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"98991","messageId":"7vocyt1is2.fsf@gitster.siamese.dyndns.org","threadId":"16928","inReplyTo":null,"subject":"What's cooking in git.git (Dec 2008, #04; Mon, 29)","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2008-12-30T20:59:25Z","receivedAt":"2008-12-30T20:59:25Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"with '-' are only in 'pu' while commits prefixed with '+' are\nin 'next'.  The ones marked with '.' do not appear in any of the branches,\nbut I am still holding onto them.\n\nThe topics list the commits in reverse chronological order.  The topics\nmeant to be merged to the maintenance series have \"maint-\" in their names.\n\n----------------------------------------------------------------\n[New Topics]\n\n* nd/grep-assume-unchanged (Sat Dec 27 15:21:03 2008 +0700) 2 commits\n - grep: grep cache entries if they are \"assume unchanged\"\n - grep: support --no-ext-grep to test builtin grep\n\n* rs/diff-ihc (Sun Dec 28 19:45:32 2008 +0100) 1 commit\n + diff: add option to show context between close hunks\n\n* as/maint-shortlog-cleanup (Wed Dec 24 17:34:44 2008 +0100) 2 commits\n - builtin-shortlog.c: do not unnecessarily strdup before insertion\n   in list\n - builtin-shortlog.c: use string_list_append() instead of\n   duplicating its code\n\n* js/maint-merge-recursive-r-d-conflict (Mon Dec 22 23:10:20 2008 +0100) 1 commit\n + merge-recursive: mark rename/delete conflict as unmerged\n\n* kk/maint-http-push (Tue Dec 23 11:31:15 2008 +0300) 1 commit\n + http-push: support full URI in handle_remote_ls_ctx()\n\n* jc/maint-ls-tree (Thu Dec 25 16:54:23 2008 -0800) 1 commit\n + ls-tree: add --full-tree option\n\n* mh/maint-sendmail-cc-doc (Mon Dec 29 00:37:25 2008 +0100) 1 commit\n + doc/git-send-email: mention sendemail.cc config variable\n\n----------------------------------------------------------------\n[Stalled and may need help and prodding to go forward]\n\n* wp/add-patch-find (Thu Nov 27 04:08:03 2008 +0000) 3 commits\n . In add --patch, Handle K,k,J,j slightly more gracefully.\n . Add / command in add --patch\n . git-add -i/-p: Change prompt separater from slash to comma\n\nI am still holding onto this earlier topic to add '/' subcommand to allow\nfinding a hunk with given text, but I'd rather not merge/rebase it on top\nof wp/add-p-goto series myself.  Waiting for a reroll.\n\n* kb/am-directory (Fri Aug 29 15:27:50 2008 -0700) 1 commit\n . git-am: Pass the --directory option through to git-apply\n\nA reroll of this by Simon Schubert triggered a series to fix a parameter\npropagation bug, and another reroll to add \"git am --directory=path/\"\nshould be much easier now.  I am not likely to use the feature myself, so\nit is up to intrested volunteers to carry it forward.\n\n* ds/uintmax-config (Mon Nov 3 09:14:28 2008 -0900) 1 commit\n - autoconf: Enable threaded delta search when pthreads are supported\n\nThis automatically enables threaded delta search code when autoconf\ndetects pthreads are usable.  I haven't heard neither positive nor\nnegative comments from minority platforms that might be harmed.\n\n* jc/blame (Wed Jun 4 22:58:40 2008 -0700) 2 commits\n + blame: show \"previous\" information in --porcelain/--incremental\n   format\n + git-blame: refactor code to emit \"porcelain format\" output\n\nThis gives Porcelains (like gitweb) the information on the commit _before_\nthe one that the final blame is laid on, which should save them one\nrev-parse to dig further.  The line number in the \"previous\" information\nmay need refining, and sanity checking code for reference counting may\nneed to be resurrected before this can move forward.\n\n----------------------------------------------------------------\n[Actively cooking]\n\n* mk/gitweb-feature (Mon Dec 15 22:16:19 2008 -0800) 1 commit\n - gitweb: unify boolean feature subroutines\n\n* cb/merge-recursive-fix (Mon Dec 15 02:41:24 2008 -0800) 3 commits\n + Merge branch 'cb/maint-merge-recursive-fix' into cb/merge-\n   recursive-fix\n + merge-recursive: do not clobber untracked working tree garbage\n + modify/delete conflict resolution overwrites untracked file\n\n* cb/maint-merge-recursive-fix (Sun Dec 14 19:40:09 2008 -0800) 2 commits\n + merge-recursive: do not clobber untracked working tree garbage\n + modify/delete conflict resolution overwrites untracked file\n\n* js/notes (Sat Dec 20 13:06:03 2008 +0100) 4 commits\n - Add an expensive test for git-notes\n - Speed up git notes lookup\n - Add a script to edit/inspect notes\n - Introduce commit notes\n\n* wp/add-p-goto (Thu Dec 4 10:22:40 2008 +0000) 2 commits\n + Add 'g' command to go to a hunk\n + Add subroutine to display one-line summary of hunks\n\n* jn/gitweb-blame (Thu Dec 11 01:33:29 2008 +0100) 3 commits\n - gitweb: cache $parent_commit info in git_blame()\n - gitweb: A bit of code cleanup in git_blame()\n - gitweb: Move 'lineno' id from link to row element in git_blame\n\nJakub seemed to feel they are not yet ready.\n\n* mv/um-pdf (Wed Dec 10 23:44:50 2008 +0100) 1 commit\n + Add support for a pdf version of the user manual\n\nI do not have a new enough combination of dblatex and asciidoc myself but\nthis may help interested people.\n\n* sc/gitweb-category (Fri Dec 12 00:45:12 2008 +0100) 3 commits\n - gitweb: Optional grouping of projects by category\n - gitweb: Split git_project_list_body in two functions\n - gitweb: Modularized git_get_project_description to be more generic\n\n* gb/gitweb-patch (Thu Dec 18 08:13:19 2008 +0100) 4 commits\n - gitweb: link to patch(es) view in commit(diff) and (short)log view\n - gitweb: add patches view\n - gitweb: change call pattern for git_commitdiff\n - gitweb: add patch view\n\n----------------------------------------------------------------\n[Graduated to \"master\"]\n\n* js/rebase-i-p (Mon Dec 15 11:05:31 2008 +0100) 2 commits\n + rebase -i -p: Fix --continue after a merge could not be redone\n + Show a failure of rebase -p if the merge had a conflict\n\n* np/auto-thread (Mon Dec 15 20:44:30 2008 +0100) 3 commits\n + Force t5302 to use a single thread\n + pack-objects: don't use too many threads with few objects\n + autodetect number of CPUs by default when using threads\n\n* lt/reset-merge (Wed Dec 3 18:00:12 2008 -0800) 2 commits\n + Document \"git-reset --merge\"\n + Add 'merge' mode to 'git reset'\n\n----------------------------------------------------------------\n[Will merge to \"master\" soon]\n\n* cb/mergetool (Fri Dec 12 21:48:41 2008 +0000) 4 commits\n + mergetool: Don't keep temporary merge files unless told to\n + mergetool: Add prompt to continue after failing to merge a file\n + Add -y/--no-prompt option to mergetool\n + Fix some tab/space inconsistencies in git-mergetool.sh\n\nI have been waiting for comments from the original author and other\ninterested parties, but haven't heard anything yet.  This tool is on the\nfringe from my point of view anyway, so I'll push them out to 'master'\nsoon.  If there is a breakage that annoys real people, we will hear from\nthem, and we can take it from there.\n\n----------------------------------------------------------------\n[On Hold]\n\n* nd/narrow (Sun Nov 30 17:54:38 2008 +0700) 17 commits\n - wt-status: show sparse checkout info\n - Introduce default sparse patterns (core.defaultsparse)\n - checkout: add new options to support sparse checkout\n - clone: support sparse checkout with --sparse-checkout option\n - unpack_trees(): add support for sparse checkout\n - unpack_trees(): keep track of unmerged entries\n - Introduce \"sparse patterns\"\n - Merge branch 'master' into nd/narrow\n - t2104: touch portability fix\n - grep: skip files outside sparse checkout area\n - checkout_entry(): CE_NO_CHECKOUT on checked out entries.\n - Prevent diff machinery from examining worktree outside sparse\n   checkout\n - ls-files: Add tests for --sparse and friends\n - update-index: add --checkout/--no-checkout to update\n   CE_NO_CHECKOUT bit\n - update-index: refactor mark_valid() in preparation for new options\n - ls-files: add options to support sparse checkout\n - Introduce CE_NO_CHECKOUT bit\n\nKicked out of 'next' by popular demand (see recent discussion on the\ninteraction between the checkout area and commands such as \"grep\").\n\n* jc/clone-symref-2 (Sat Nov 29 23:38:21 2008 -0800) 7 commits\n - clone: test the new HEAD detection logic\n - Merge commit 'HEAD@{2}' into HEAD\n - upload-pack: send the HEAD information\n - clone: find the current branch more explicitly\n - connect.c::read_extra_info(): find where HEAD points at\n - connect.c::read_extra_info(): prepare to receive more than server\n   capabilities\n - get_remote_heads(): refactor code to read \"server capabilities\"\n\nAn attempt to extend the fetch protocol to make the logic to detect where\nHEAD on the origin site points to more robust.\n\n* cc/bisect-replace (Mon Nov 24 22:20:30 2008 +0100) 9 commits\n - bisect: add \"--no-replace\" option to bisect without using replace\n   refs\n - rev-list: make it possible to disable replacing using \"--no-\n   bisect-replace\"\n - bisect: use \"--bisect-replace\" options when checking merge bases\n - merge-base: add \"--bisect-replace\" option to use fixed up revs\n - commit: add \"bisect_replace_all\" prototype to \"commit.h\"\n - rev-list: add \"--bisect-replace\" to list revisions with fixed up\n   history\n - Documentation: add \"git bisect replace\" documentation\n - bisect: add test cases for \"git bisect replace\"\n - bisect: add \"git bisect replace\" subcommand\n\nI think a mechanism like this should be added to replace grafts, but it\nshould always be enabled for normal revision traversal operation, while\nalways disabled for object enumeration and transfer operation (iow, fsck,\nfetch and push should use the real ancestry information recorded in the\nunderlying objects, while rev-list, log, etc. should always use the\nreplaced objects).  I have a suspicion that even cat-file could honor it.\n\n* jc/send-pack-tell-me-more (Thu Mar 20 00:44:11 2008 -0700) 1 commit\n - \"git push\": tellme-more protocol extension\n\nThis seems to have a deadlock during communication between the peers.\nSomeone needs to pick up this topic and resolve the deadlock before it can\ncontinue.\n\n* jk/renamelimit (Sat May 3 13:58:42 2008 -0700) 1 commit\n - diff: enable \"too large a rename\" warning when -M/-C is explicitly\n   asked for\n\nThis would be the right thing to do for command line use,\nbut gitk will be hit due to tcl/tk's limitation, so I am holding\nthis back for now.\n\n* jc/stripspace (Sun Mar 9 00:30:35 2008 -0800) 6 commits\n - git-am --forge: add Signed-off-by: line for the author\n - git-am: clean-up Signed-off-by: lines\n - stripspace: add --log-clean option to clean up signed-off-by:\n   lines\n - stripspace: use parse_options()\n - Add \"git am -s\" test\n - git-am: refactor code to add signed-off-by line for the committer\n"},{"id":"99011","messageId":"m3fxk5b6di.fsf@localhost.localdomain","threadId":"16928","inReplyTo":"7vocyt1is2.fsf@gitster.siamese.dyndns.org","subject":"Re: What's cooking in git.git (Dec 2008, #04; Mon, 29)","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2008-12-30T23:15:43Z","receivedAt":"2008-12-30T23:15:43Z","isPatch":false,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"Junio C Hamano <gitster@pobox.com> writes:\n\n> with '-' are only in 'pu' while commits prefixed with '+' are\n> in 'next'.  The ones marked with '.' do not appear in any of the branches,\n> but I am still holding onto them.\n> \n> The topics list the commits in reverse chronological order.  The topics\n> meant to be merged to the maintenance series have \"maint-\" in their names.\n> \n> ----------------------------------------------------------------\n> [Actively cooking]\n> \n> * mk/gitweb-feature (Mon Dec 15 22:16:19 2008 -0800) 1 commit\n>  - gitweb: unify boolean feature subroutines\n\nNice thing from what I remember (I assume it is last incantation?).\n \n> * jn/gitweb-blame (Thu Dec 11 01:33:29 2008 +0100) 3 commits\n>  - gitweb: cache $parent_commit info in git_blame()\n>  - gitweb: A bit of code cleanup in git_blame()\n>  - gitweb: Move 'lineno' id from link to row element in git_blame\n> \n> Jakub seemed to feel they are not yet ready.\n\nThis is, I think, ready. It is incremental AJAX-y blame in gitweb\nthat is not yet ready; this is simple cleanup and performance\nimprovement.\n \n> * sc/gitweb-category (Fri Dec 12 00:45:12 2008 +0100) 3 commits\n>  - gitweb: Optional grouping of projects by category\n>  - gitweb: Split git_project_list_body in two functions\n>  - gitweb: Modularized git_get_project_description to be more generic\n\nI think this needs a bit more cooking; with one more commit I think\nyou can have categories within requested sort order, and not always\nsorted alphabetically.\n \n> * gb/gitweb-patch (Thu Dec 18 08:13:19 2008 +0100) 4 commits\n>  - gitweb: link to patch(es) view in commit(diff) and (short)log view\n>  - gitweb: add patches view\n>  - gitweb: change call pattern for git_commitdiff\n>  - gitweb: add patch view\n\nI think it is ready, or almost ready. I'll try to review this series\nwithin a week. Feel free to prod me if I forget.\n\n\nP.S. BTW. what is the status on using parse_options among git\ncommands?\n-- \nJakub Narebski\nPoland\nShadeHawk on #git\n"},{"id":"99016","messageId":"20081231001036.GW21154@genesis.frugalware.org","threadId":"16928","inReplyTo":"m3fxk5b6di.fsf@localhost.localdomain","subject":"Re: What's cooking in git.git (Dec 2008, #04; Mon, 29)","fromName":"Miklos Vajna","fromEmail":"vmiklos@frugalware.org","sentAt":"2008-12-31T00:10:36Z","receivedAt":"2008-12-31T00:10:36Z","isPatch":false,"sender":{"key":"vmiklos@frugalware.org","avatar":"https://gravatar.com/avatar/401c1cbbb3a5d13e650c691a2c71d6fd0b80df1a01bc74d9f1972675dd58f2bd?d=mp&s=160"},"body":"On Tue, Dec 30, 2008 at 03:15:43PM -0800, Jakub Narebski <jnareb@gmail.com> wrote:\n> P.S. BTW. what is the status on using parse_options among git\n> commands?\n\nYou mean the C or the shell commands?\n\nI sent the third version of the builtin-apply migration ($gmane/104029),\nbut I got no answer so far, probably it was dropped on the floor by\naccident. ;-)\n"},{"id":"99020","messageId":"7vwsdhyz0u.fsf@gitster.siamese.dyndns.org","threadId":"16928","inReplyTo":"20081231001036.GW21154@genesis.frugalware.org","subject":"Re: What's cooking in git.git (Dec 2008, #04; Mon, 29)","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2008-12-31T00:22:09Z","receivedAt":"2008-12-31T00:22:09Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Miklos Vajna <vmiklos@frugalware.org> writes:\n\n> On Tue, Dec 30, 2008 at 03:15:43PM -0800, Jakub Narebski <jnareb@gmail.com> wrote:\n>> P.S. BTW. what is the status on using parse_options among git\n>> commands?\n>\n> You mean the C or the shell commands?\n>\n> I sent the third version of the builtin-apply migration ($gmane/104029),\n> but I got no answer so far, probably it was dropped on the floor by\n> accident. ;-)\n\nNo, just I can be slow during a week like everybody else.\n"},{"id":"99241","messageId":"200901030640.36426.chriscool@tuxfamily.org","threadId":"16928","inReplyTo":"7vocyt1is2.fsf@gitster.siamese.dyndns.org","subject":"Re: What's cooking in git.git (Dec 2008, #04; Mon, 29)","fromName":"Christian Couder","fromEmail":"chriscool@tuxfamily.org","sentAt":"2009-01-03T05:40:36Z","receivedAt":"2009-01-03T05:40:36Z","isPatch":false,"sender":{"key":"christian.couder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/208954?v=4"},"body":"Le mardi 30 décembre 2008, Junio C Hamano a écrit :\n>\n> * cc/bisect-replace (Mon Nov 24 22:20:30 2008 +0100) 9 commits\n>  - bisect: add \"--no-replace\" option to bisect without using replace\n>    refs\n>  - rev-list: make it possible to disable replacing using \"--no-\n>    bisect-replace\"\n>  - bisect: use \"--bisect-replace\" options when checking merge bases\n>  - merge-base: add \"--bisect-replace\" option to use fixed up revs\n>  - commit: add \"bisect_replace_all\" prototype to \"commit.h\"\n>  - rev-list: add \"--bisect-replace\" to list revisions with fixed up\n>    history\n>  - Documentation: add \"git bisect replace\" documentation\n>  - bisect: add test cases for \"git bisect replace\"\n>  - bisect: add \"git bisect replace\" subcommand\n>\n> I think a mechanism like this should be added to replace grafts, \n\nThe problem with replacing grafts is that a graft can specify many parents \nfor one commit while a ref associates only one object to a name.\n\nOne way to overcome this could be to use many refs for each graft, for \nexample (in the packed ref format):\n\n<1st parent sha1> refs/replace/grafts/<commit sha1>-<1st parent sha1>\n<2nd parent sha1> refs/replace/grafts/<commit sha1>-<2nd parent sha1>\n...\n\nAnother way would be to put all the parents in the ref name, for example:\n\n<1st parent sha1> /refs/replace/grafts/<commit sha1>-<1st parent sha1>-<2nd \nparent sha1>-<3rd parent sha1>\n\nThere is the same kind of problem to mark many \"good\" (and \"skip\") commits \nwhen bisecting and we use something like the first solution above:\n\n<1st good commit sha1> refs/bisect/good-<1st good commit sha1>\n<2nd good commit sha1> refs/bisect/good-<2nd good commit sha1>\n...\n\nBut I think the above solutions are not very clean and it might be better in \nthe long run to make it possible to associate more than one object to a \nref.\n\nAm I missing something? Do you see another way?\n\nThanks and happy new year everybody,\nChristian.\n"},{"id":"99244","messageId":"7vhc4gadg9.fsf@gitster.siamese.dyndns.org","threadId":"16928","inReplyTo":"200901030640.36426.chriscool@tuxfamily.org","subject":"Re: What's cooking in git.git (Dec 2008, #04; Mon, 29)","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2009-01-03T10:31:02Z","receivedAt":"2009-01-03T10:31:02Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Christian Couder <chriscool@tuxfamily.org> writes:\n\n> Le mardi 30 décembre 2008, Junio C Hamano a écrit :\n>>\n>> * cc/bisect-replace (Mon Nov 24 22:20:30 2008 +0100) 9 commits\n>>  - bisect: add \"--no-replace\" option to bisect without using replace\n>>    refs\n>>  - rev-list: make it possible to disable replacing using \"--no-\n>>    bisect-replace\"\n>>  - bisect: use \"--bisect-replace\" options when checking merge bases\n>>  - merge-base: add \"--bisect-replace\" option to use fixed up revs\n>>  - commit: add \"bisect_replace_all\" prototype to \"commit.h\"\n>>  - rev-list: add \"--bisect-replace\" to list revisions with fixed up\n>>    history\n>>  - Documentation: add \"git bisect replace\" documentation\n>>  - bisect: add test cases for \"git bisect replace\"\n>>  - bisect: add \"git bisect replace\" subcommand\n>>\n>> I think a mechanism like this should be added to replace grafts, \n>\n> The problem with replacing grafts is that a graft can specify many parents \n> for one commit while a ref associates only one object to a name.\n\nSorry, maybe I misunderstood your implementation.  What I thought we\ndiscussed during GitTogether was to write out the object name of the\nreplacement object in refs/replace/<sha1>.\n\nWhen the caller asks read_sha1_file() for an object whose object name is\n<sha1>, you see if there is refs/replace/<sha1> in the repository, and\nread the ref to learn the object name of the object that replaces it.  And\nyou return that as if it is the original object.\n\nSo if your commit cca1704897e7fdb182f68d4c48a437c5d7bc5203 looks like:\n\n    tree 7ccf394b2e80536442703e0013bf0dde86547e08\n    parent 3827210b91a7d363ea67bcf0b9c6ee1c91d2f3c5\n    author Johannes Schindelin <Johannes.Schindelin@gmx.de> 1230919672 +0100\n    committer Junio C Hamano <gitster@pobox.com> 1230931180 -0800\n\n    git wrapper: Make while loop more reader-friendly\n    ...\n\nand you would want to lie about its author (or add/subtract different\nparent lines, or record a fixed-up tree, or whatever), you first prepare a\nreplacement commit object:\n\n    $ R=$(git cat-file commit cca17048 |\n      sed -e 's/Johannes /&E /' |\n      git hash-object -t commit --stdin -w)\n    $ git cat-file commit $R\n    tree 7ccf394b2e80536442703e0013bf0dde86547e08\n    parent 3827210b91a7d363ea67bcf0b9c6ee1c91d2f3c5\n    author Johannes E Schindelin <Johannes.Schindelin@gmx.de> 1230919672 +0100\n    committer Junio C Hamano <gitster@pobox.com> 1230931180 -0800\n\n    git wrapper: Make while loop more reader-friendly\n    ...\n\nand then tell git to replace the original object with this one:\n\n    $ git update-ref refs/replace/$(git rev-parse cca17048) $R\n\nWith such a layout, if your arrange the object reachability traverser\n(e.g. fsck, pack-objects, bundle and prune) ignore refs/replace mechanism,\nwhile everybody else pay attention to it, you will be able to safely\ntransfer the \"graft\" information via usual clone/fetch/push mechanism,\nwhile making things like log, bisect and show just work, pretending as if\nthe commit cca17048 were made by JES and not by JS.\n"},{"id":"99292","messageId":"200901041218.59112.chriscool@tuxfamily.org","threadId":"16928","inReplyTo":"7vhc4gadg9.fsf@gitster.siamese.dyndns.org","subject":"Re: What's cooking in git.git (Dec 2008, #04; Mon, 29)","fromName":"Christian Couder","fromEmail":"chriscool@tuxfamily.org","sentAt":"2009-01-04T11:18:58Z","receivedAt":"2009-01-04T11:18:58Z","isPatch":false,"sender":{"key":"christian.couder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/208954?v=4"},"body":"Le samedi 3 janvier 2009, Junio C Hamano a écrit :\n> Christian Couder <chriscool@tuxfamily.org> writes:\n> > Le mardi 30 décembre 2008, Junio C Hamano a écrit :\n> >> * cc/bisect-replace (Mon Nov 24 22:20:30 2008 +0100) 9 commits\n> >>  - bisect: add \"--no-replace\" option to bisect without using replace\n> >>    refs\n> >>  - rev-list: make it possible to disable replacing using \"--no-\n> >>    bisect-replace\"\n> >>  - bisect: use \"--bisect-replace\" options when checking merge bases\n> >>  - merge-base: add \"--bisect-replace\" option to use fixed up revs\n> >>  - commit: add \"bisect_replace_all\" prototype to \"commit.h\"\n> >>  - rev-list: add \"--bisect-replace\" to list revisions with fixed up\n> >>    history\n> >>  - Documentation: add \"git bisect replace\" documentation\n> >>  - bisect: add test cases for \"git bisect replace\"\n> >>  - bisect: add \"git bisect replace\" subcommand\n> >>\n> >> I think a mechanism like this should be added to replace grafts,\n> >\n> > The problem with replacing grafts is that a graft can specify many\n> > parents for one commit while a ref associates only one object to a\n> > name.\n>\n> Sorry, maybe I misunderstood your implementation.  What I thought we\n> discussed during GitTogether was to write out the object name of the\n> replacement object in refs/replace/<sha1>.\n>\n> When the caller asks read_sha1_file() for an object whose object name is\n> <sha1>, you see if there is refs/replace/<sha1> in the repository, and\n> read the ref to learn the object name of the object that replaces it. \n> And you return that as if it is the original object.\n\nOk. When I first implemented \"bisect replace\" I saw that I could reuse the \ngraft fix-up mechanism. And as you talked about replacing grafts, I thought \nthat you wanted the implementation to use that mechanism instead of adding \na different one.\n\nBut I agree that it may be more powerfull and generic to replace objects the \nway you describe it. So I will work on that.\n\nThanks,\nChristian.\n"}]}