Re: git-svn: Branching clarifications

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Eric Wong wrote:
> Russ Brown <pickscrape@xxxxxxxxx> wrote:
>
>> OK, so that's telling me that I currently have master checked out into
>> my working copy. My question is: where did master come from? Is it a
>> local branch of trunk?
> 
> git-svn sets "master" to the most recently committed-to branch
> in SVN the first time it fetches.  "git-log master" will tell
> you (look at the git-svn-id: lines).
> 
> After you do your initial fetch/clone, it should say something like:
> 
>   ----------------------------------------------------------------------
>   Checked out HEAD:
>     svn://my-repository-here/branches/foo r12345
>   ----------------------------------------------------------------------
> 

Ah, I see. As discussed elsewhere in this thread, I think it's therefore
probably most wise to ignore the master branch completely for the time
being and manually create local branches as needed instead when using
git-svn.

>> Moving on, say I want to work on branch1. Can I simply issue git
>> checkout branch1? If I do so I get this:
>>
>> $ git branch -a
>> * (no branch)
>>   master
>>   branch1
>>   trunk
>>
>> Which is a bit scary. It seems my working copy is orphaned...
> 
> Yes it is.  Branches under the refs/remotes/ hierarchy were created
> back in the day to tell the local user they should not commit to
> them directly.
> 

ok. I figure it's probably best to configure git-svn to create the
remote trunk branch with a name other than simply 'trunk' as it is in my
case so I can create a local branch with that name, which makes more
sense from a usability point of view. This may have been a mistake on my
part though when first setting it up.

Having just tried it again, it does create the branches with names
simply 'trunk' and 'branch1'. Since I won't actually be using those
directly, I've found it more sensible to tweak the config after init to
add an extra level into the name ('repo/trunk' and 'repo/branch1') so I
can create more pleasant local branch names to work with. Is there any
disadvantage to this approach?

>> OK, so let's assume I'm supposed to create a local branch of each remote
>> branch I want to work on. So:
>>
>> $ git branch local/branch1 branch1
>> $ git checkout local/branch1
>>
>> $ git-branch -a
>> * local/branch1
>>   master
>>   branch1
>>   trunk
> 
> That's correct.  You can also use "git checkout -b local/branch1 branch1"
> instead of those two commands.
> 

Handy shortcut. :)

>> Am I supposed to have used --track when creating  this branch? What are
>> the implications for specifying or not specifying that flag when using
>> git-svn?
> 
> --track has no effect with git-svn.  dcommit will automatically figure
> out which branch it should commit to[1].  Running "git-svn dcommit -n"
> with 1.5.3 will tell you which URL you'll commit to.
> 

Sweet.

>> So I do some editing on this branch, commit and dcommit. The changes
>> appear as expected in the repo.
>>
>> At this point if I checkout master, the contents look like
>> local/branch1, which isn't what I'd suspected (that it would be a branch
>> of trunk). What does master represent?
> 
> (see above)
> 
>> So I checkout local/trunk, and create a new file, commit and dcommit.
>> Umm, it's been committed to branch1 on the repo: not trunk,
>>
>> So I figure I'm quite obviously doing something wrong here. Could
>> someone give me a hand and tell me what it is I'm getting wrong?
> 
> If you run "git-log local/trunk", does the first commit to show
> a "git-svn-id: " line have the URL pointing to trunk or branch1?
> 
> Again, if you're unsure about where you're committing to,
> "git-svn dcommit -n" in 1.5.3 is your friend.
> 

Yes, this is proving quite useful. It would also be useful to be able to
see a list of commits that dcommit have 'queued' to dcommit from the
command line.

> [1] - as long as you don't use git-merge or git-pull.  If you decide to
>       do those things, make sure you have Lars's latest patches
>       that enables --first-parent.
>       Otherwise stick with format-patch/am/cherry-pick/fetch/rebase
> 

Would it be sensible to somehow or other render these commands unusable
when dealing with operations in a git-svn repository that could cause
damage? Don't know how feasible it would be though. I do know though
that if there's a button there that someone could press to mess things
up, someone *will* press it. :)

-- 

Russ
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux