Re: [SoC RFC] libsvn-fs-git: A git backend for the subversion filesystem
- From
Jakub Narebski <jnareb@gmail.com>
- Date
- Mar 20, 2008, 10:01 UTC
- Message-ID
- <frtcmc$l8m$1@ger.gmane.org>
- In-Reply-To
- <20080320045632.GB8410@spearce.org>
[Cc: Shawn O. Pearce <spearce@spearce.org>,
Bryan Donlan <bdonlan@gmail.com>,
git@vger.kernel.org]Shawn O. Pearce wrote:
> Bryan Donlan <bdonlan@gmail.com> wrote:
Show 20 quoted lines
>> /revmap/NNN - a reference to the commit hash in the .git-svn branch >> corresponding to the given subversion revision number > > How about using a simple flat file interface? To initially prime > the file you can do something like: > > git rev-list --topo-order --date-order --reverse --all \ > >.git/svn-map > > and then number the revisions by the line number that they appear on. > Locating a Git SHA-1 for a specific SVN revision would be a simple > case of lseek(fd, 41 * rev, SEEK_SET). Going the other direction > would be more of a challenge, but is still doable. > > Updating the file should just require appending new commits; if > the SVN client wants a new commit you append on and return the > line number. If Git has caused new commits not in this file you > need to rebuild the log. This would have to be done incrementally, > to prevent changing a prior SVN revision number that clients may > already know about.
By the way, have you looked into what git-svn uses? IIRC it had some improvements to avoid spending more disk space on SVN revno <-> Git SHA-1 mapping than on the repository itself...
-- Jakub Narebski Warsaw, Poland ShadeHawk on #git