threads / discuss / 6918

RFC: script to add another remote

Subject: RFC: script to add another remote

## tl;dr

6 messages between Feb 22, 2007 and Feb 23, 2007.

replies: 5people: 2as markdown or json

Pavel Roskin· Feb 22, 2007, 22:16 UTC · lore
Hello!

I'm trying to find the best way to add a new remote to an existing repository, create a local branch for it and make it easy to switch to that branch and back and to update all branches.

This is important because some Linux developers want to publish their branches without having to serve the whole Linux repository, which is about 175Mb even if packed with repack.usedeltabaseoffset=true.

I have written a simple script "git-clone-more" to help users who want to track more than one remote:

#!/bin/sh
set -e
if test $# -lt 2 || test $# -gt 4; then
	echo "Usage: git-clone-more URL REMOTE [BRANCH [REMBRANCH]]" >&2
	exit 1
fi
URL=$1
REMOTE=$2
BRANCH=${3-$REMOTE}
REMBRANCH=${4-master}
git-remote add "$REMOTE" "$URL"
git-fetch "$REMOTE"
git-config branch."$BRANCH".remote "$REMOTE"
git-config branch."$BRANCH".merge refs/heads/"$REMBRANCH"
git-checkout -b "$BRANCH" remotes/"$REMOTE"/"$REMBRANCH"

If there is any easier way to do the same thing? Maybe we could extend one of the git commands or make the above script another git command?

It's interesting that git-clone-more can be used instead of git-clone. I can use it e.g. to check out git in an empty directory:

git-init git-clone-more git://www.kernel.org/pub/scm/git/git.git git

-- 
Regards,
Pavel Roskin
Junio C Hamano· Feb 22, 2007, 22:24 UTC · re: Pavel Roskin · lore

Re: RFC: script to add another remote

Pavel Roskin <proski@gnu.org> writes:
Show 5 quoted lines
> It's interesting that git-clone-more can be used instead of git-clone.
> I can use it e.g. to check out git in an empty directory:
>
> git-init
> git-clone-more git://www.kernel.org/pub/scm/git/git.git git
Isn't that what "git remote" is about?
Pavel Roskin· Feb 23, 2007, 08:14 UTC · re: Junio C Hamano · lore

Re: RFC: script to add another remote

On Thu, 2007-02-22 at 14:24 -0800, Junio C Hamano wrote:
Show 9 quoted lines
> Pavel Roskin <proski@gnu.org> writes:
> 
> > It's interesting that git-clone-more can be used instead of git-clone.
> > I can use it e.g. to check out git in an empty directory:
> >
> > git-init
> > git-clone-more git://www.kernel.org/pub/scm/git/git.git git
> 
> Isn't that what "git remote" is about?

I don't understand your question. "git remote" doesn't provide this functionality by itself. "git remote" is used by git-clone-more. I wish I were missing the obvious, but just mentioning "git remote" to me doesn't seem to help.

I see that the manual for "git-remote" includes an example repeating some parts of git-clone-more. That's another evidence that the functionality provided by git-clone-more is needed.

It looks like git-clone should be extended to support cloning of a repository on top of the existing one.

-- 
Regards,
Pavel Roskin
Junio C Hamano· Feb 23, 2007, 08:21 UTC · re: Pavel Roskin · lore

Re: RFC: script to add another remote

Pavel Roskin <proski@gnu.org> writes:
> It looks like git-clone should be extended to support cloning of a
> repository on top of the existing one.

Actually git-remote was done during a previous discussion on the same subject, with a goal to make it possible to rewrite git-clone (after giving the "where is the HEAD" logic to git-remote, perhaps) in terms of git-init and git-remote.

So probably the next step would be to refactor some logic and functionality out of git-clone, move them to git-remote, and reimplement git-clone in terms of git-remote. Implementation of "--more" option would become much simpler (or, almost free) after that is done.

Pavel Roskin· Feb 23, 2007, 08:24 UTC · re: Junio C Hamano · lore

Re: RFC: script to add another remote

On Fri, 2007-02-23 at 00:21 -0800, Junio C Hamano wrote:
Show 15 quoted lines
> Pavel Roskin <proski@gnu.org> writes:
> 
> > It looks like git-clone should be extended to support cloning of a
> > repository on top of the existing one.
> 
> Actually git-remote was done during a previous discussion on the
> same subject, with a goal to make it possible to rewrite
> git-clone (after giving the "where is the HEAD" logic to
> git-remote, perhaps) in terms of git-init and git-remote.
> 
> So probably the next step would be to refactor some logic and
> functionality out of git-clone, move them to git-remote, and
> reimplement git-clone in terms of git-remote.  Implementation of
> "--more" option would become much simpler (or, almost free)
> after that is done.
Oh, I see.  Thanks for the explanation.
-- 
Regards,
Pavel Roskin
Junio C Hamano· Feb 23, 2007, 08:43 UTC · re: Pavel Roskin · lore

Re: RFC: script to add another remote

Pavel Roskin <proski@gnu.org> writes:
Show 7 quoted lines
>> So probably the next step would be to refactor some logic and
>> functionality out of git-clone, move them to git-remote, and
>> reimplement git-clone in terms of git-remote.  Implementation of
>> "--more" option would become much simpler (or, almost free)
>> after that is done.
>
> Oh, I see.  Thanks for the explanation.

Sorry for being incomplete --- obviously you cannot reimplement clone with init and remote alone. You need 'fetch' ;-).

← back to recent threads