Re: Newbie question about setting up git repository from svn (git svn)

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

 



On 3/6/2011 8:23 PM, Neal Kreitzinger wrote:
On 3/4/2011 9:57 AM, Hillel (Sabba) Markowitz wrote:
Please respond directly to sabbahillel@xxxxxxxxx as I do not have time
to follow this mailing list.

It is standard practice on this newsgroup to reply to the sender and cc
the original cclist along with the newgroup. Following this newsgroup
can be challenging when your schedule is busy, but you can learn alot of
really cool stuff by perusing it regularly. I try to keep up daily but
alas I am a few days behind.

I am attempting to set up a git repository based on an svn repository.
The idea would be that the members of the project would be able to use
git exclusively with the central git repository acting as the
coordinator. This git server would be the only one capable of issuing
the git svn dcommit and git svn rebase and the members of the project
would not have to worry about it. Eventually, the subversion
repository would be transferred to git.

I have no experience with git-svn (the svn part, that is), but your plan
sounds good to me. Read on to see my comments on the parts I do have
experience with...

I created a separate Ubuntu VM in order to set up the git repository.
I used "git svn clone -s" to set up MyProject.git on "gitserver"

The command "git branch -a" shows
* master
remotes/branch1
remotes/branch2
remotes/trunk


I then went to my main VM and used ssh to clone the repository

git clone gitserver:/opt/git/MyProject
cd MyProject
git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master

How do I check out the trunk or appropriate branches from the remote?
I am probably misreading the documentation. Would it be

git checkout -b branch1


Correction: (Please ignore my confusion about "trunk" in the previous post. I see that by "trunk" you mean the "remotes/trunk" on gitmaster)

"git checkout -b branch1" will create a new branch called branch1 based
on whatever your current HEAD is. HEAD is the commit that you are
currently pointing to, ie. the tip of the branch currently checkout out.
(see git checkout manpage.) The asterisk indicates above that
you are currently on master. Therefore, "git checkout -b branch1" will
create a new branch called "branch1" that has the same history as
master. It sounds like you want to checkout "branch1", "branch2", and
"trunk". Read on...

does the master on the remote (and here) actually point to the trunk
by default?
should I checkout the branches on "gitserver"?

not being familiar with git-svn, but familiar with "git", I would advise
you to do the following:
(1) on "gitserver" perform:
(a) git branch branch1 remotes/branch1 (this will create a branch called
branch1 that tracks remotes/branch1)
(b) git branch branch2 remotes/branch2
(c) git branch trunk remotes/trunk
Now you have the branches master, branch1, branch2, and trunk on
"gitserver".
(2) I don't know how to push from a git repo to an svn repo so I can't
tell you if gitserver master points to svn trunk or not. However, read
on for what I do know...

I also do not see how I can get the list of branches from the remote
location.without having to do an ssh into the gitserver, cd to the
repository directory, and use a 'branch -a' there. Is there a way to
ask for this information? I have not yet been successful in setting up
gitosis yet because this is on an internal company intranet and I do
not have a valid machine name for my accounts as everything is being
done on VMs. Thus, my public key ends with
"sabbahillel@desktop-ubuntu" rather than an actual machine name or
address.

The way you get the list is by doing a git-fetch on MyProject (AFTER you
create the branches on gitserver). This will create remote tracking
branches for all the branches on gitserver. Notice I said "branches on
gitserver" and not "remote tracking branches on gitserver". You can't
track the remote tracking branches of your remote (at least not sanely).
Thats why you had to create tracking branches on gitserver that track
the remote tracking branches that track the svn repo. Now that you have
branches "branch1", "branch2", and "trunk" on gitserver you can track
them in MyProject. git-fetch will create remotes/origin/branch1,
remotes/origin/branch2, remotes/origin/trunk in MyProject. Now you can
do "git branch branch1 remotes/origin/branch1" to create the branch1
branch in MyProject. "git checkout branch1" in MyRepo will check it out.
Repeat for branch2 and trunk. (I'm not familiar with ssh details, but I
assume your last ssh comment is made into a non-issue by what I just
stated above.)

Would you have a pointer to a HOW-TO that discusses this.

I assume these links:

http://git-scm.com/course/svn.html

https://git.wiki.kernel.org/index.php/GitSvnCrashCourse

https://git.wiki.kernel.org/index.php/GitSvnSwitch

https://git.wiki.kernel.org/index.php/SvnMigration

http://utsl.gen.nz/talks/git-svn/intro.html

http://www.tfnico.com/presentations/git-and-subversion

or the git-svn manpage:

http://www.kernel.org/pub/software/scm/git/docs/v1.7.1.4/git-svn.html

will help you. (you need to use the git version of the manual that
corresponds to your installation. 1.7.1.4 is relevant to me, but perhaps
not to you.)

Thanks for any help that you can give me.

--
Sabba - ××× ××× - Hillel
Hillel (Sabba) Markowitz | Said the fox to the fish, "Join me ashore"
SabbaHillel@xxxxxxxxx | The fish are the Jews, Torah is our water
http://sabbahillel.blogspot.com

Despite my ignorance regarding svn and git-svn, I hope my comments will
be of some help to you or point you in the right direction.

v/r,
Neal


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