Thank You Thomas,

As Tim pointed out, I did use the -s switch to indicate that I used the 
"standard" svn layout.  I would have thought that using that switch and the 
meta-data in svn which indicates the source rev of each item in the "tags" 
directory, that git-svn would be able to apply a tag with the name of the 
directory to each item at its source rev, and then not create them as 
branches.  Isn't that the point of that switch?

Regardless, I'll take a look at the information you posted for how to clean 
this up and see if I can make it usable.  Thank you.  If I didn't say it 
earlier, this is a Proof of Concept to get a migration tested.  I can 
always do it over if something is wrong with it.

If there is any other info out there, please share, but in the mean time, 
I'll look through what you posted and write back with any questions.

dmp

On Thursday, December 20, 2012 2:22:50 AM UTC-6, Thomas Ferris Nicolaisen 
wrote:
>
> On Thursday, December 20, 2012 5:35:56 AM UTC+1, Daniel Pomerantz wrote:
>
>> I have what is probably a silly question.  
>
>
> They are not silly :)
>  
>
>> Short background:  I hate SVN and finally got my boss to agree to move to 
>> git, if I can make him happy with it.  I started looking at migrating today 
>> and ran the following command for our relatively small repo.  It should be 
>> noted that I have the standard /trunk/branches/tags directories from the 
>> svn_url:
>>
>> git svn clone <svn_url> --authors-file=users.txt --no-metadata -s 
>> <Git_Repo_Name>
>>
>> The repo itself looks to have been created with all revisions, but the 
>> tags and branches are missing.  When I CD into the directory and type "git 
>> tag -l" it comes up empty, and when I type in "git show-branch" I get one 
>> entry, which isn't really a branch at all.  Just a revision where the 
>> comment had b as the first letter.
>>
>
> Any reason why you are not using the --stdlayout argument? This is key for 
> converting a standard layout SVN (trunk/branches/tags) into branches in Git.
>  
>
>> So lots of questions:  Why do some of the branches and tags show up with 
>> an @pegrev and not others?  Maybe it's something I don't need to worry 
>> about, but what is it?  
>
>
> I think they're kind of timestamps for when something was branched out in 
> SVN. You can just ignore them, and delete them later on when you're done 
> with everything else.
>  
>
>> Since these are showing up as remote, does that mean that they are in the 
>> svn repo only?  
>
>
> They're also in your Git repo. Remote branches are always "in" your own 
> repository as well. You'll fix this when you push all branches into a bare 
> Git repository as I explain further down.
>  
>
>> Big question I guess is what am I doing wrong?  How do I import my svn 
>> repo into git, complete with branches and tags?
>>
>
> Note that git-svn doesn't create Git tags from SVN tags. SVN tags are 
> physically equal to branches, so that's why they are converted to Git 
> branches. This however, is easy to fix. See the "Changing tagging commits 
> to tags" section in this page:
>
> http://thomasrast.ch/git/git-svn-conversion.html
>
> As a bonus question, how do I do that into a bare git repo?  The best 
>> method I've found so far is to clone it "local" and then "git clone --bare 
>> <Git_Repo_Name> <git_repo_name>.git"  Will that even work?  Is it the best 
>> way for a bare repo migrated from svn?
>>
>
> After you have created a git-svn clone. you can create an empty bare repo, 
> and push all branches from your git-svn clone into the bare repository.
>
> The gist of it is:
>
> First do the git-svn clone (you've probably already done this):
>
> cd  ~/git-repos/
> git svn clone -s foo-fetching
>
> Next up, initialize the bare repository
> cd ~/git-repos
> git init --bare ~/git-repos/foo.git 
>
> In fetch repo: add the remote 'bare':
>
> cd foo-fetching
> git remote add bare ~/git-repos/foo.git 
>
> Now edit foo-fetching/.git/config:
>
> #Set fetch to do remotes instead of heads:
>     fetch = +refs/remotes/*:refs/remotes/bare/*
> #Add a push configuration, push all remotes to heads:
>     push = refs/remotes/*:refs/heads/*
>
> Now, back on the command line, push all branches from git-svn clone into 
> the bare repository:
>
> git push bare
>
> After this, you can start cleaning up, put the bare repository in some 
> shared folder where others can access it, and profit.
>
> I've shown all this, plus a few other tricks in this presentation: 
> http://www.tfnico.com/presentations/git-and-subversion 
>

-- 


Reply via email to