From: "Shawn O. Pearce" <spearce@spearce.org>
To: Bruno Cesar Ribas <ribas@c3sl.ufpr.br>
Cc: git@vger.kernel.org
Subject: Re: Git / Subversion Interoperability
Date: Thu, 22 Mar 2007 20:43:36 -0400 [thread overview]
Message-ID: <20070323004335.GA17773@spearce.org> (raw)
In-Reply-To: <20070322224829.GA7048@c3sl.ufpr.br>
Bruno Cesar Ribas <ribas@c3sl.ufpr.br> wrote:
> I'm going to apply for the Git / Subversion Interoperability project.
>
> I saw that there is no mentor yet assigned for the "job". So i'm sending this
> mail to get some help to start the project by submiting to GSOC and begin to
> work :)
I'll consider being a mentor for this project, but I know very
little of the SVN protocol or how its server behaves. I also
don't really have the time to learn those nitty-gritty details
myself, nor do I have any burning desire to.
> My idea on this project is to create:
> 1. git-svnserver
> 2. write a backend for Subversion
These are two different approaches to the same problem. I think
what was meant here was:
> 1. git-svnserver
Here we create a new program that can be invoked via SSH that runs
the server-side of the SVN protocol. Or we create a CGI program that
acts as the extended-WebDAV server for SVN. Sam Vilain (mugwump
on #git) is suggesting using this approach as it probably will be
easier to debug.
> 2. write a backend for Subversion
In this case we try to reuse the existing SVN server code by
creating a library module that plugs into that system and uses a
Git repository to store data, rather than say the existing bdb or
fsfs stores. Git should be much faster than fsfs, use a lot less
disk space, and be just as atomic.
By using this approach you avoid the need to reimplement their
network protocol. Which is a nice part of this approach. But the
downside is you have to write code to run within their library and
address space, and that conforms to their storage API.
But either approach has a few key issues:
- Assigning repository-wide revision numbers. Git doesn't have
such a concept, but its key to SVN. These would need to be stored
in a file so the server can quickly map from revision number to
Git commit SHA-1. The reflogs may help here, but currently they
also expire. Any reflog that is being used to do this mapping
cannot be expired, ever.
- Branches. In SVN these are in the repository wide namespace,
but in Git they aren't. I imagine we'd want to just enforce the
standard layout that the SVN people recommened:
/trunk/ --> refs/heads/master
/branches/ --> refs/heads/ (minus master)
/tags/ --> refs/tags/
That's all I can think of right now. But I'm sure there are more.
> And make it easy to work with SSH using those "common" flags in
> authorized_keys like:
> command="svnserve -t -r /home/svn --tunnel-user=bruno" ssh-dss bla bla
Not following you...
> And as an idea i would like to make the same funcionality to git, as it is
> not as easy today to do something like above :)
Again, not following you...
--
Shawn.
next prev parent reply other threads:[~2007-03-23 0:43 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-03-22 22:48 Git / Subversion Interoperability Bruno Cesar Ribas
2007-03-23 0:43 ` Shawn O. Pearce [this message]
2007-03-23 1:03 ` Julian Phillips
2007-03-23 1:24 ` Shawn O. Pearce
2007-03-23 1:36 ` Julian Phillips
2007-03-23 10:34 ` Karl Hasselström
2007-03-23 15:21 ` Bruno Cesar Ribas
2007-03-23 15:48 ` Karl Hasselström
2007-03-23 18:13 ` Julian Phillips
2007-03-23 19:34 ` Bruno Cesar Ribas
2007-03-23 22:05 ` David Lang
2007-03-23 22:11 ` Daniel Barkalow
2007-03-24 6:41 ` Shawn O. Pearce
2007-03-24 18:55 ` Karl Hasselström
2007-03-24 20:13 ` Linus Torvalds
2007-03-24 20:37 ` Junio C Hamano
2007-03-26 3:06 ` Sam Vilain
2007-03-23 21:30 ` Christian Wiese
2007-03-23 22:00 ` Steven Grimm
2007-03-24 6:56 ` Shawn O. Pearce
2007-03-26 3:04 ` Sam Vilain
2007-03-23 14:21 ` Jakub Narebski
2007-03-24 6:45 ` Shawn O. Pearce
2007-03-24 20:38 ` Eric Wong
2007-03-24 20:31 ` Eric Wong
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20070323004335.GA17773@spearce.org \
--to=spearce@spearce.org \
--cc=git@vger.kernel.org \
--cc=ribas@c3sl.ufpr.br \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).