Re: A question about changing remote repo name

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

 



2010/1/6 David Aguilar <davvid@xxxxxxxxx>:
>
> Hi,
>
> On Tue, Jan 05, 2010 at 12:30:03PM +0800, Dongas wrote:
>> 2010/1/5 Russell Steicke <russellsteicke@xxxxxxxxx>:
>> > On Mon, Jan 4, 2010 at 2:45 PM, Dongas <dongas86@xxxxxxxxx> wrote:
>>
>> Thanks a lot, Russell.
>> I followed you instruction but it seemed it needs more changes.
>>
>> Execute your steps....
>> Becomes:
>> root@ubuntu:/work/git-repo/free_monkey# tree -a
>
> Just a note: I would recommend against being root.
> You cloned the repo so you should own it.

Thanks for your advices.

> More below...
>
>
>> root@ubuntu:/work/git-repo/free_monkey# cat .git/config
>> [core]
>>       repositoryformatversion = 0
>>       filemode = true
>>       bare = false
>>       logallrefupdates = true
>> [remote "karmic"]
>>       url = git@xxxxxxxxxxxxx:free_monkey.git
>>       fetch = +refs/heads/*:refs/remotes/karmic/*
>> [branch "master"]
>>       remote = karmic
>>       merge = refs/heads/master
>>
>> But the result was:
>> root@ubuntu:/work/git-repo/free_monkey# git branch -a
>> * master
>>   karmic/HEAD
>>   origin/master
>> The 'origin/master' was still not changed.
>
>
> A safter alternative would be to leave the "origin" lines in
> place as a duplicate of karmic:
>
> [remote "karmic"]
>        url = git@xxxxxxxxxxxxx:free_monkey.git
>        fetch = +refs/heads/*:refs/karmic/origin/*
>
> [remote "origin"]
>        url = git@xxxxxxxxxxxxx:free_monkey.git
>        fetch = +refs/heads/*:refs/remotes/origin/*
>
>
> At that point you will have two remotes, "karmic" and "origin".
> "git fetch karmic" to get the latest branches.
>
> Finally, "git remote rm origin" to remove all references to it.

It's a good idea.
I have tried and it seemed to work.
(I also did a few more works to make it better)

Below is the result:
root@ubuntu:/work/git-repo/tmp/free_monkey# git branch -a
* master
  origin/HEAD
  origin/master
root@ubuntu:/work/git-repo/tmp/free_monkey# cat .git/config
[core]
	repositoryformatversion = 0
	filemode = true
	bare = false
	logallrefupdates = true
[remote "origin"]
	url = git@xxxxxxxxxxxxx:free_monkey.git
	fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
	remote = origin
	merge = refs/heads/master
root@ubuntu:/work/git-repo/tmp/free_monkey# git remote add karmic
git@xxxxxxxxxxxxx:free_monkey.git
root@ubuntu:/work/git-repo/tmp/free_monkey# git fetch karmic
>From git@xxxxxxxxxxxxx:free_monkey
 * [new branch]      master     -> karmic/master
root@ubuntu:/work/git-repo/tmp/free_monkey# git branch -a
* master
  karmic/master
  origin/HEAD
  origin/master
root@ubuntu:/work/git-repo/tmp/free_monkey# git remote rm origin
root@ubuntu:/work/git-repo/tmp/free_monkey# git branch -a
* master
  karmic/master

However there's a little issue:
root@ubuntu:/work/git-repo/tmp/free_monkey# git pull
fatal: 'origin': unable to chdir or not a git archive
fatal: The remote end hung up unexpectedly
root@ubuntu:/work/git-repo/tmp/free_monkey# grep -wrin 'origin' .git/
root@ubuntu:/work/git-repo/tmp/free_monkey# cat .git/config
[core]
	repositoryformatversion = 0
	filemode = true
	bare = false
	logallrefupdates = true
[branch "master"]
[remote "karmic"]
	url = git@xxxxxxxxxxxxx:free_monkey.git
	fetch = +refs/heads/*:refs/remotes/karmic/*

But 'git pull karmic master' worked well.
root@ubuntu:/work/git-repo/tmp/free_monkey# git pull karmic master
>From git@xxxxxxxxxxxxx:free_monkey
 * branch            master     -> FETCH_HEAD
Already up-to-date.

For conveniently, i did a few more steps.
Add two lines below '[branch "master"]':
root@ubuntu:/work/git-repo/tmp/free_monkey# cat .git/config
[core]
	repositoryformatversion = 0
	filemode = true
	bare = false
	logallrefupdates = true
[branch "master"]
	remote = karmic
	merge = refs/heads/master
[remote "karmic"]
	url = git@xxxxxxxxxxxxx:free_monkey.git
	fetch = +refs/heads/*:refs/remotes/karmic/*
Then, 'git pull' worked well.
root@ubuntu:/work/git-repo/tmp/free_monkey# git pull
Already up-to-date.

> That was a while ago (probably over a year ago) and this wasn't
> anybody's itch to scratch in the meantime so nothing every
> materialized.  It think this is only the 2nd time this has come
> up in that whole time.  Sorry, I wasn't able to find the thread.

Thanks for the info.

> Here's a nice middle ground --
>
> instead of naming your branch "master" you can call your default
> branch "karmic".
>
> To make it the default for "git clone" then you'll need to push
> your local master branch and call it "karmic" over there:
>
>        git push origin master:karmic
>
> Then, go to that server and change the repo's HEAD entry so that
> it points to karmic instead of master.
>
>        ssh admin@gitbox
>        cd /path/to/repo.git
>        vi HEAD
>
> From then on, everyone who clones the repo will have a "karmic"
> branch by default instead of the master branch.
>
> To get that branch on repos that were cloned before the change:
>
>        git fetch origin
>        git checkout -b karmic origin/karmic
>
>
>
> With this setup you might even want to remove the "master"
> branch altogether since it might be confusing to have both:
>
> Once:
>        git push origin :master
>
> In everyone's repo:
>        git remote prune origin
>
>
> You will need to make sure everyone has either:
>        a) cloned from the new master-less repo
>        b) run the "checkout -b" and "remote prune" commands
>
> Otherwise someone'll likely "git push" the master branch back
> into existence.

Thanks a lot for the alternative way , it looks good.

Regards
Dongas
--
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]