Browse Source

Update tutorial to describe shared repository style a bit more.

Signed-off-by: Junio C Hamano <junkio@cox.net>
maint
Junio C Hamano 20 years ago
parent
commit
c95173410d
  1. 73
      Documentation/tutorial.txt

73
Documentation/tutorial.txt

@ -892,18 +892,26 @@ pull from:


It is likely that you will be pulling from the same remote It is likely that you will be pulling from the same remote
repository from time to time. As a short hand, you can store 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: directory, like this:


mkdir -p .git/branches ------------------------------------------------
echo rsync://kernel.org/pub/scm/git/git.git/ \ mkdir -p .git/remotes/
>.git/branches/linus 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. 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: 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. Examples.


@ -913,9 +921,9 @@ Examples.


the above are equivalent to: the above are equivalent to:


(1) git pull rsync://kernel.org/pub/scm/git/git.git/ HEAD (1) git pull http://www.kernel.org/pub/scm/git/git.git/ HEAD
(2) git pull rsync://kernel.org/pub/scm/git/git.git/ tag v0.99.1 (2) git pull http://www.kernel.org/pub/scm/git/git.git/ tag v0.99.1
(3) git pull rsync://kernel.org/pub/.../jgarzik/netdev-2.6.git e100 (3) git pull http://www.kernel.org/pub/.../jgarzik/netdev-2.6.git e100




Publishing your work Publishing your work
@ -1169,18 +1177,43 @@ Working with Others, Shared Repository Style
If you are coming from CVS background, the style of cooperation If you are coming from CVS background, the style of cooperation
suggested in the previous section may be new to you. You do not suggested in the previous section may be new to you. You do not
have to worry. git supports "shared public repository" style of have to worry. git supports "shared public repository" style of
cooperation you are more familiar with as well. cooperation you are probably more familiar with as well.


For this, you should set up a public repository on a machine For this, set up a public repository on a machine that is
that are reachable via SSH by people with "commit privileges". reachable via SSH by people with "commit privileges". Put the
Put them in the same user group and make the repository writable committers in the same user group and make the repository
by that group. Then, each committer would first merge with the writable by that group.
head of the branch of choice, and run "git push" to update the
branch at the public repository. "git push" refuses to update Each committer would then:
if the reference on the remote side is not an ancestor of the
commit you are pushing, to prevent you from overwriting changes - clone the shared repository to a local repository,
made by somebody else.
------------------------------------------------
$ 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 ] [ to be continued.. cvsimports ]

Loading…
Cancel
Save