diff options
author | J. Bruce Fields <bfields@fieldses.org> | 2006-01-29 07:31:47 +0300 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2006-01-31 06:08:33 +0300 |
commit | b8bc67cef31453233f1ff6722c0bd3c99df44756 (patch) | |
tree | a83502dfd97a7c44a919c6666635a9851a0a0036 /Documentation/core-tutorial.txt | |
parent | 1506fc34f7585880aeeb12b5fdfe2de4800f9df5 (diff) |
cvs-migration documentation update
Here's some changes to the cvs-migration.txt. As usual, in my attempt
to make things clearer someone may have found I've made them less so, or
I may have just gotten something wrong; so any review is welcomed.
I can break up this sort of thing into smaller steps if preferred, the
monolothic patch is just a bit simpler for me for this sort of
thing.
I moved the material describing shared repository management from
core-tutorial.txt to cvs-migration.txt, where it seems more appropriate,
and combined two sections to eliminate some redundancy.
I also revised the earlier sections of cvs-migration.txt, mainly trying
to make it more concise.
I've left the last section of cvs-migration.txt (on CVS annotate
alternatives) alone for now.
Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'Documentation/core-tutorial.txt')
-rw-r--r-- | Documentation/core-tutorial.txt | 118 |
1 files changed, 1 insertions, 117 deletions
diff --git a/Documentation/core-tutorial.txt b/Documentation/core-tutorial.txt index 35579cc5b0..4513ad635f 100644 --- a/Documentation/core-tutorial.txt +++ b/Documentation/core-tutorial.txt @@ -1623,123 +1623,7 @@ 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 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. Make sure their umasks are set up to -allow group members to write into directories other members -have created. - -You, as an individual committer, then: - -- First 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 ------------------------------------------------- -[NOTE] -================================ -The first `git clone` would have placed the following in -`my-project/.git/remotes/origin` file, and that's why this and -the next step work. ------------- -URL: repo.shared.xz:/pub/scm/project.git/ my-project -Pull: master:origin ------------- -================================ - -- 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, `git push` in the last step 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. - -The `git push` command without any explicit refspec parameter -pushes the refs that exist both in the local repository and the -remote repository. So the last `push` can be done with either -one of these: ------------- -$ git push origin -$ git push repo.shared.xz:/pub/scm/project.git/ ------------- -as long as the shared repository does not have any branches -other than `master`. -[NOTE] -============ -If you created your shared repository by cloning from somewhere -else, you may have the `origin` branch. Your developers -typically do not use that branch; remove it. Otherwise, that -would be pushed back by the `git push origin` because your -developers' repository would surely have `origin` branch to keep -track of the shared repository, and would be counted as "exist -on both ends". -============ - -Advanced Shared Repository Management -------------------------------------- - -Being able to push into a shared repository means being able to -write into it. If your developers are coming over the network, -this means you, as the repository administrator, need to give -each of them an SSH access to the shared repository machine. - -In some cases, though, you may not want to give a normal shell -account to them, but want to restrict them to be able to only -do `git push` into the repository and nothing else. - -You can achieve this by setting the login shell of your -developers on the shared repository host to `git-shell` program. - -[NOTE] -Most likely you would also need to list `git-shell` program in -`/etc/shells` file. - -This restricts the set of commands that can be run from incoming -SSH connection for these users to only `receive-pack` and -`upload-pack`, so the only thing they can do are `git fetch` and -`git push`. - -You still need to create UNIX user accounts for each developer, -and put them in the same group. Make sure that the repository -shared among these developers is writable by that group. - -. Initializing the shared repository with `git-init-db --shared` -helps somewhat. - -. Run the following in the shared repository: -+ ------------- -$ chgrp -R $group repo.git -$ find repo.git -type d -print | xargs chmod ug+rwx,g+s -$ GIT_DIR=repo.git git repo-config core.sharedrepository true ------------- - -The above measures make sure that directories lazily created in -`$GIT_DIR` are writable by group members. You, as the -repository administrator, are still responsible to make sure -your developers belong to that shared repository group and set -their umask to a value no stricter than 027 (i.e. at least allow -reading and searching by group members). - -You can implement finer grained branch policies using update -hooks. There is a document ("control access to branches") in -Documentation/howto by Carl Baldwin and JC outlining how to (1) -limit access to branch per user, (2) forbid overwriting existing -tags. - +See link:cvs-migration.txt[git for CVS users] for the details. Bundling your work together --------------------------- |