git/list[1] front-page[2] threads[3] people[4] search[5] about
 

git-svn against a monolithic repository

From
MBMarc Bowes <marcbowes@gmail.com>
Date
Apr 14, 2010, 09:44 UTC
Message-ID
<j2tcfa4e841004140244o1dfa51fdk9b435ff7c04c2a3b@mail.gmail.com>
In-Reply-To
<h2jcfa4e841004140232y2137d43eg4be9bebdc2d29290@mail.gmail.com>
Hiya,

The subversion repository I need to work with is quite odd (by my standards, anyways).

The structure looks something like:
|-- patches
|   `-- foobar
|       `-- project-name
`-- trunk-team-name
    `-- project-name

That is, a single monolithic repository. Each team has their own trunk (as a folder). The patches folder is essentially a production branch for a specific region. Each developer tends to have a branch somewhere else which they use to hack on. When they are ready, the code goes through a review process and then is copied (svn copy) into trunk. It then goes through a build process and is finally merged (in this case, using meld) into the patches where other stuff happens to it.

I would like to use a single git repository for each project. That is, my master branch should relate to the project folder in trunk and my production-foobar branch should relate to the project folder in patches. I could then use git to hack on a local branch and merge to master (and then dcommit back to trunk). When ready, I could then merge master into the production branch (and then dcommit back to patches).

I guess what I'm looking for is something like:

git svn clone https://svn/url -T trunk-team-name/project-name -b patches/foobar/project-name

However, I'm pretty sure that is wrong. Not only does it take forever (I landed up canceling it), but I don't think the git-svn branches will understand the weirdo layout.

I tried manually adding svn-remotes, running git-svn fetch against then and then branching off. However, I started seeing weird things happening when merging (sometimes git-svn became attached to the wrong remote, sometimes it wouldn't update properly, lots of obscure merge conflicts..).

In the worst case, I could clone each project (that is, trunk and patches) separately and manually merge. But if I can get git to do this for me, it'd make a lot of sense.

If anybody has any ideas, I'd be extremely grateful.
Message 1 of 1 in “git-svn against a monolithic repository”
  1. Marc BowesApr 14, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.