Subject: Re: how to fetch a new svn branch after clone?

From: Changsheng Jiang <[email-masked]>
Date: Fri, 17 Jul 2009 10:25:38 +0800

Thank Allen.

I deleted some branches in local git repository, since it's no need to
track every one's branch.

And after that, ''git svn fetch'' report error like this:

error: invalid object a0eb1d6f18d20c0b9f30062cd981e9b668aac75f
fatal: git-write-tree: error building trees
write-tree: command returned error: 128

Is it wrong to delete some svn branches in git by "git branch -r -d branch_name"

                                                      Changsheng Jiang

On Fri, Jul 17, 2009 at 10:18, Allen Johnson<[email-masked]> wrote:
> This setup works for me:
>
> # create branch directly in svn
> svn copy svn://hostname/project/trunk
> svn://hostname/project/branches/test -m "test"
>
> # update your local git repository
> git svn fetch
>
> # verify you have the branch by listing all remote branches
> git branch -r
>
> # you should see "test" in the list, now checkout that branch and do some work
> git checkout -b local-test test
>
> # perform some commits on that branch then sync with svn
> git commit ...
> git svn rebase
> git svn dcommit
>
> Hope that works for you.
>
> Allen
>
> On Thu, Jul 16, 2009 at 10:00 PM, Changsheng Jiang<[email-masked]> wrote:
>> Thank Marc.
>>
>> You are right, it should be the latter case with url
>> http://www.example.com/project/branches/test
>>
>> But "git svn clone" has already added these lines to .git/config
>>
>> [svn-remote "svn"]
>>        url = https://xxx.xxxx.com/svn/xxx
>>        fetch = trunk:refs/remotes/trunk
>>        branches = branches/*:refs/remotes/*
>>        tags = tags/*:refs/remotes/tags/*
>>
>> And it still can not fetch new branch.
>>
>>                                                      Changsheng Jiang
>>
>> On Fri, Jul 17, 2009 at 04:26, Marc Branchaud<[email-masked]> wrote:
>>> The latest 1.6.4-rc1 contains patches to git-svn for it to support more than one branch URL in an svn repository.
>>>
>>> However, before I describe that, can you confirm whether your new branch is in fact named
>>>
>>>        http://svn.example.com/project/test
>>>
>>> or is it really
>>>
>>>        http://svn.example.com/project/test/<branchname>
>>>
>>> Because if it's the former then I'm not sure if git-svn can handle your new branch.  The problem is that even though the branch is named 'test' it's a sibling to the 'branches' 'tags' and 'trunk' paths in the repository.  For git-svn to pick up branches, you point it at the path *containing* the branch names.  In the former case, to pick up project/test as the 'test' branch you'd have to point git-svn at the project directory, and that would cause it to also pick up project/tags, project/branches, and project/trunk as other branches (named 'tags', 'branches' and 'trunk').
>>>
>>> However, in the latter (test/<branchname>) case, with 1.6.4, I *think* git-svn will pick up the new branches under test if you add a new 'branches' line to the svn-remote's section in your .git/config file.  Something like
>>>
>>>        branches = test/*:refs/remotes/*
>>>
>>> might let you see the new branches.  The reason I can't be more certain is that if you've done a 'git svn fetch' since the branch was created then git-svn might not pick up the branch-creation commits later.  Unfortunately I don't know git-svn well enough to say for certain.
>>>
>>>                M.
>>>
>>>
>>> Changsheng Jiang wrote:
>>>> Hi list,
>>>>
>>>> I know how to clone a svn repository with all branches and tags at the
>>>> initial step, but I find no answers of how to fetch a new svn branch
>>>> after clone.
>>>>
>>>> For example, this
>>>>
>>>> git svn clone http://svn.example.com/project -T trunk -b branches -t tags
>>>>
>>>> will clone all branches. but that clone, the svn repository has a new
>>>> branch test with url http://svn.example.com/project/test, how to clone
>>>> it as the initial step?
>>>>
>>>> Thanks.
>>>>
>>>>                                                      Changsheng Jiang
>>>> --
>>>> To unsubscribe from this list: send the line "unsubscribe git" in
>>>> the body of a message to [email-masked]
>>>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe git" in
>> the body of a message to [email-masked]
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>>
>