Re: [PATCH v2 3/4] fast-export: don't handle uninteresting refs
- From
Jonathan Nieder <jrnieder@gmail.com>
- Date
- Oct 31, 2012, 00:57 UTC
- Message-ID
- <20121031005748.GW15167@elie.Belkin>
- In-Reply-To
- <20121030185914.GI15167@elie.Belkin>
Hi again,
Felipe Contreras wrote:
> They have been marked as UNINTERESTING for a reason, lets respect that.
So, the above description conveyed zero information, as you mentioned.
A clearer explanation would be the following:
fast-export: don't emit "reset" command for negative refs
When "git fast-export" encounters two refs on the commandline referring to the same commit, it exports the first during the usual commit walk and the second using a "reset" command in a final pass over extra_refs:
$ git fast-export master next reset refs/heads/master commit refs/heads/master mark :1 author Jonathan Nieder <jrnieder@gmail.com> 1351644412 -0700 committer Jonathan Nieder <jrnieder@gmail.com> 1351644412 -0700 data 17 My first commit!
reset refs/heads/next from :1
Unfortunately the code to do this doesn't distinguish between positive and negative refs, producing confusing results:
$ git fast-export ^master next reset refs/heads/next from :0
$ git fast-export master ^next reset refs/heads/next from :0
Use revs->cmdline instead of revs->pending to iterate over the rev-list arguments, checking the UNINTERESTING flag bit to distinguish between positive (master, --all, etc) and negative (next.., --not --all, etc) revs and avoid enqueueing negative revs in extra_revs.
This does not affect revs that were excluded from the revision walk because pointed to by a mark, since those use the SHOWN bit on the commit object itself and not UNINTERESTING on the rev_cmdline_entry.
A patch meeting the above description would make perfect sense to me. Except for the somewhat strange testcase, the patch I am replying to would also be fine in the short term, as long as it had an analagous description (i.e., with an appropriate replacement for the second-to-last paragraph).
Thanks for your patience, and hoping that helps, Jonathan