Re: Difficulties in advertising a new branch to git newbies
- From
- Santi Béjar <sbejar@gmail.com>
- Date
- Feb 1, 2007, 09:02 UTC
- Message-ID
- <8aa486160702010102q3a49c4cfle44379a5f0b5422d@mail.gmail.com>
- In-Reply-To
- <200702010120.58806.Josef.Weidendorfer@gmx.de>
On 2/1/07, Josef Weidendorfer <Josef.Weidendorfer@gmx.de> wrote:
Show 10 quoted lines
> On Wednesday 31 January 2007, Carl Worth wrote:
> > > It would be nice if:
> > >
> > > git clone -b ${branch} git://...
>
> Nice indeed.
>
> Additionally, it would be nice for clone to directly
> checkout tags. Why not an option "--checkout <ref>"
> to directly checkout <ref> after cloning?Maybe, I'm not sure.
Show 11 quoted lines
> > In addition, it would be great to have a command that did the same > > setup within an existing repository. > > Why not use "git clone" for this? > Currently, the man page says about the directory it will clone into: > > "Cloning into an existing directory is not allowed." > > But we could relax this: if the specified directory is the root of > a checkout (ie. with a .git subdir), we would clone a remote repository > into the same local repository.
You can do it with git-remote. I think it is sensible to have a command to get a new repository and a command to have a new remote.
For the "work on the non-HEAD branch" I think we could have:
# clone a remote repository and start working with branch ${branch} $ git clone -b ${branch} ${url}
# add a new branch based on a remote branch, # and configure to pull from there. $ git branch ${branch} ${remote_branch} $ git checkout -b ${branch} ${remote_branch}
as you see it is the current syntax, so I suggest to automatically setup the branch.${branch}.{remote,merge} configs to follow the ${remote_branch} if this is sensible. So for example
$ git clone ${url_of_git.git} $ cd git $ git checkout -b maint origin/maint $ git-config -l | grep ^branch.maint branch.master.remote=origin branch.master.merge=refs/heads/maint
( or branch.master.merge=refs/remotes/origin/maint )
This changes the current behaviour, but I think it make sense. If this is not possible another way would be to have another option (-r for remote, or -f for follow, or -p for pull, or -m for merge, ...) as:
$ git branch ${branch} -r ${remote_branch} $ git checkout -b ${branch} -r ${remote_branch}
And if you want to add/change the remote/merge config for an existing branch, in addition to doing this with git-config, git-remote could do it as it currently shows the tracking branches.
Santi