Re: [PATCH v2 11/11] vcs-svn,svn-fe: add an option to write svnrev notes
From: Dmitry Ivankov <hidden>
Date: 2016-06-15 22:51:40
Sorry for a way too slow response. This patch is probably the most unbaked one, so I'll start here. On Tue, Jul 26, 2011 at 3:39 AM, Jonathan Nieder [off-list ref] wrote:
Hi, Dmitry Ivankov wrote:quoted
There are already a few options to determine svn revision from which a git commit imported with svn-fe came from. One is to make svn-fe write a git-svn-id: line to commit messages. Another one is to calc distance to the root commit. The former includes a "url" and is for git-svn compatibility, the latter is obviously slow and a bit fragile. $ svn-fe --notes_ref=notes_tree --ref=branch... will write annotations for branch commits to the notes_tree, each annotation is a simple "rN" string. Then these annotations can be viewed manually or used in incremental import to detect the last imported revision or to (re)create the import marks for further imports.Wouldn't another way be to look at the mark numbers?
If marks file is absent (after clone for example), we'll need to look at notes anyway. If it is present and has a mark for latest revision we can hope it is valid and not regenerate it. If for some reason notes are lost and marks are present, it's possible to recreate notes from marks though, at least "rN" ones.
I am not sure I like this. svn-fe is supposed to be a generally useful tool, and this patch hard-codes the particular note format rN. If it is needed, maybe it would be possible to do something like --notes-ref=refs/notes/svn-rev --note='project foo, r%N' As a bonus, that would allow including more information using different flag characters in the note in the future.
Format string looks nice. While the whole notes thing may need more thinking. The main reason I wrote these in svn-fe is that it's more atomic to write note just after writing a commit. Also "checkpoint" will create notes for current status (and will write marks too, but weren't we going to consider notes as a primary data copy? it can be cloned for example). One more consideration is that copy-from information most likely will be written by svn-fe (nothing else knows it anyway) to some notes, so we'll need some notes writing in svn-fe.