From: Jakub Narebski Date: Thu, 20 Mar 2008 10:01:48 GMT Subject: Re: [SoC RFC] libsvn-fs-git: A git backend for the subversion filesystem Message-ID: In-Reply-To: <20080320045632.GB8410@spearce.org> [Cc: Shawn O. Pearce , Bryan Donlan , git@vger.kernel.org] Shawn O. Pearce wrote: > Bryan Donlan wrote: >> /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