distributed scm+freebsd svn?

Andriy Gapon avg at freebsd.org
Mon Jul 27 10:33:00 UTC 2009


on 27/07/2009 02:15 Alfred Perlstein said the following:
> Hello hackers,
> 
> Does anyone here use one of the distributed SCMs
> to manage contributions to FreeBSD in an easy
> manner?
> 
> Any pointers to a setup you have?
> 
> I thought "git" was supposed to make this easy, but
> going over the docs leaves me with a lot of questions.
> 
> I'm hoping to be able to basically:
>   sync into my "distributed repo".
>   allow a third party access to it.
>   easily commit upstream back into svn from a branch
>     in my distributed scm.

I am using git for all of the above.
It works quite satisfactory, but there is one major annoyance - git-svn doesn't
understand svn mergeinfo. As such merges done in svn are not recorded in git. And
MFC done in git (e.g. via cherry-pick) won't get propagated as svn merge on dcommit.

Some info on my setup.
I have 3 git repositories:
- main one ("svn"), it is used for git-svn syncing and it tracks head, stable/7
and stable/6 svn branches;
- "stable7", used for stable/7 development;
- "head", used for head/current development;

I think of "stable7" and "head" repositories as heavy-wait branches. In these
repositories I have a master branch where I track svn through "svn" repository and
I also have "light-weight" git branches for topic development.

Typical work-cycle (e.g. for head):
1. develop in a topic branch of "head" repository
2. once development goal is achieved merge changes to master branch
3. rebase changes so that all commits are on top of all svn commits (and not
interlaced with them)
4. further improve local commits, e.g. split, merge, change commit messages, etc
5. test and review
6. push changes to the corresponding branch of "svn" repository
7. dcommit in "svn" repository, changes go to svn

This works quite well for head development and also for local changes that are not
meant to go to svn.
Unfortunately, as I said in the beginning, I have to use svn for doing "official"
(svn) MFCs. Local MFCs via git always stay local.


P.S. I am looking for a distributed solution (mercurial, bazaar?) that won't take
away what I have with git, but would correctly work with svn mergeinfo.

-- 
Andriy Gapon


More information about the freebsd-hackers mailing list