Update tutorial to describe shared repository style a bit more.
authorJunio C Hamano <junkio@cox.net>
Wed, 24 Aug 2005 23:46:11 +0000 (16:46 -0700)
committerJunio C Hamano <junkio@cox.net>
Wed, 24 Aug 2005 23:50:55 +0000 (16:50 -0700)
Signed-off-by: Junio C Hamano <junkio@cox.net>
Documentation/tutorial.txt

index 876a4afd17f75540417ba95f83e14fa4fc69cac7..997e958259367fd199b2fd84bf3128addce4f6eb 100644 (file)
@@ -892,18 +892,26 @@ pull from:
 
 It is likely that you will be pulling from the same remote
 repository from time to time. As a short hand, you can store
-the remote repository URL in a file under .git/branches/
+the remote repository URL in a file under .git/remotes/
 directory, like this:
 
-       mkdir -p .git/branches
-       echo rsync://kernel.org/pub/scm/git/git.git/ \
-           >.git/branches/linus
+------------------------------------------------
+mkdir -p .git/remotes/
+cat >.git/remotes/linus <<\EOF
+URL: http://www.kernel.org/pub/scm/git/git.git/
+EOF
+------------------------------------------------
 
 and use the filename to "git pull" instead of the full URL.
-The contents of a file under .git/branches can even be a prefix
+The URL specified in such file can even be a prefix
 of a full URL, like this:
 
-       echo rsync://kernel.org/pub/.../jgarzik/ >.git/branches/jgarzik
+------------------------------------------------
+cat >.git/remotes/jgarzik <<\EOF
+URL: http://www.kernel.org/pub/scm/linux/git/jgarzik/
+EOF
+------------------------------------------------
+
 
 Examples.
 
@@ -913,9 +921,9 @@ Examples.
 
 the above are equivalent to:
 
-       (1) git pull rsync://kernel.org/pub/scm/git/git.git/ HEAD
-       (2) git pull rsync://kernel.org/pub/scm/git/git.git/ tag v0.99.1
-       (3) git pull rsync://kernel.org/pub/.../jgarzik/netdev-2.6.git e100
+       (1) git pull http://www.kernel.org/pub/scm/git/git.git/ HEAD
+       (2) git pull http://www.kernel.org/pub/scm/git/git.git/ tag v0.99.1
+       (3) git pull http://www.kernel.org/pub/.../jgarzik/netdev-2.6.git e100
 
 
 Publishing your work
@@ -1169,18 +1177,43 @@ Working with Others, Shared Repository Style
 If you are coming from CVS background, the style of cooperation
 suggested in the previous section may be new to you. You do not
 have to worry. git supports "shared public repository" style of
-cooperation you are more familiar with as well.
-
-For this, you should set up a public repository on a machine
-that are reachable via SSH by people with "commit privileges".
-Put them in the same user group and make the repository writable
-by that group. Then, each committer would first merge with the
-head of the branch of choice, and run "git push" to update the
-branch at the public repository. "git push" refuses to update
-if the reference on the remote side is not an ancestor of the
-commit you are pushing, to prevent you from overwriting changes
-made by somebody else.
+cooperation you are probably more familiar with as well.
+
+For this, set up a public repository on a machine that is
+reachable via SSH by people with "commit privileges".  Put the
+committers in the same user group and make the repository
+writable by that group.
+
+Each committer would then:
+
+       - clone the shared repository to a local repository,
+
+------------------------------------------------
+$ git clone repo.shared.xz:/pub/scm/project.git/ my-project
+$ cd my-project
+$ hack away
+------------------------------------------------
+
+       - merge the work others might have done while you were
+          hacking away.
+
+------------------------------------------------
+$ git pull origin
+$ test the merge result
+------------------------------------------------
+
+       - push your work as the new head of the shared
+          repository.
+
+------------------------------------------------
+$ git push origin master
+------------------------------------------------
 
+If somebody else pushed into the same shared repository while
+you were working locally, the last step "git push" would
+complain, telling you that the remote "master" head does not
+fast forward.  You need to pull and merge those other changes
+back before you push your work when it happens.
 
 
 [ to be continued.. cvsimports ]