Skip to contentSkip to conversation

Documentation: enhanced "git for CVS users" doc about shared repositories

PATCH In review Francesco Pretto 9 participants 18 messages Jun 15, 2016 Documentation

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Documentation: enhanced "git for CVS users" doc about shared repositories

More detailed instructions on how to set up shared repositories. Added a reference to "git for CVS users" doc in git-init manual.

---
 Documentation/cvs-migration.txt |   72 ++++++++++++++++++++++++++++++--------
 Documentation/git-init.txt      |    7 ++++
 2 files changed, 64 insertions(+), 15 deletions(-)
Documentation/cvs-migration.txt +57 -15
index 3b6b494..c92ed49 100644
@@ -13,12 +13,12 @@ link:tutorial.html[tutorial introduction to git] should be sufficient.
 Developing against a shared repository
 --------------------------------------
 
-Suppose a shared repository is set up in /pub/repo.git on the host
+Suppose a shared repository is set up in /pub/scm/repo.git on the host
 foo.com.  Then as an individual committer you can clone the shared
 repository over ssh with:
 
 ------------------------------------------------
-$ git clone foo.com:/pub/repo.git/ my-project
+$ git clone foo.com:/pub/scm/repo.git/ my-project
 $ cd my-project
 ------------------------------------------------
 
@@ -68,37 +68,79 @@ other than `master`.
 Setting Up a Shared Repository
 ------------------------------
 
-We assume you have already created a git repository for your project,
-possibly created from scratch or from a tarball (see the
-link:tutorial.html[tutorial]), or imported from an already existing CVS
-repository (see the next section).
+We assume you have admin privilege on the remote machine. Moreover, we assume
+you have already created a git repository for your project, possibly created
+from scratch or from a tarball (see the link:tutorial.html[tutorial]),or
+imported  from an already existing CVS repository (see the next section).
 
-Assume your existing repo is at /home/alice/myproject.  Create a new "bare"
-repository (a repository without a working tree) and fetch your project into
-it:
+First, let's create a common directory for all the projects you'll want to
+track with git:
+
+-----------------------------------------------
+$ mkdir -p /pub/scm
+-----------------------------------------------
+
+It's recommended, but not necessary, to create a specific group of commiters
+for every project/repository. With root credentials launch:
+
+------------------------------------------------
+$ groupadd $group
+------------------------------------------------
+
+Assume your existing repository is at /home/alice/myproject.  Create a new
+"bare" repository (a repository without a working tree) and fetch your project
+into it:
 
 ------------------------------------------------
-$ mkdir /pub/my-repo.git
+$ mkdir /pub/scm/my-repo.git
 $ cd /pub/my-repo.git
 $ git --bare init --shared
 $ git --bare fetch /home/alice/myproject master:master
 ------------------------------------------------
 
+Now, set the group ownership of the git repository you've just created to the
+same group of the commiters:
+
+------------------------------------------------
+$ chgrp -R $group /pub/scm/my-repo.git
+------------------------------------------------
+
 Next, give every team member read/write access to this repository.  One
 easy way to do this is to give all the team members ssh access to the
 machine where the repository is hosted.  If you don't want to give them a
 full shell on the machine, there is a restricted shell which only allows
 users to do git pushes and pulls; see gitlink:git-shell[1].
 
-Put all the committers in the same group, and make the repository
-writable by that group:
+First, enable it putting on the trusted shells list of the system:
+
+------------------------------------------------
+$ echo `which git-shell` >> /etc/shells
+------------------------------------------------
+
+Ensure users will not have write permission on /pub/scm. Now, let's create
+them with the following command launched with root credentials:
 
 ------------------------------------------------
-$ chgrp -R $group /pub/my-repo.git
+$ useradd -g $group -d /pub/scm -s `which git-shell` $username
 ------------------------------------------------
 
-Make sure committers have a umask of at most 027, so that the directories
-they create are writable and searchable by other group members.
+They will be enabled to push on repositories owned by the group $group.
+Later, you can give users access to other projects simply by adding them to
+other groups.
+
+[NOTE]
+================================
+With previous versions of git, it could be necessary to set umask variable of
+all commiters with values like 002 or 007. If you still need to support them,
+you can do it in the following way; assuming that all users have their home
+positionated at /pub/scm, like in the previous example, launch the command:
+
+------------------------------------------------
+$ echo "umask 022" >> /pub/scm/.profile
+------------------------------------------------
+
+At the next login, users will have their umask variable automatically set.
+================================
 
 Importing a CVS archive
 -----------------------
Documentation/git-init.txt +7 -0
index 07484a4..f5f363d 100644
@@ -101,6 +101,13 @@ $ git-add .     <2>
 <2> add all existing file to the index
 
 
+SHARED REPOSITORIES
+-------------------
+
+Please refer to link:cvs-migration.html[git for CVS users], section "Setting Up
+a Shared Repository", for details on how to set up shared repositories.
+
+
 Author
 ------
 Written by Linus Torvalds <[email protected]>
#1 lore raw
Quoted 17 lines · Francesco Pretto

More detailed instructions on how to set up shared repositories. Added a reference to "git for CVS users" doc in git-init manual.

---
 Documentation/cvs-migration.txt |   72 ++++++++++++++++++++++++++++++--------
 Documentation/git-init.txt      |    7 ++++
 2 files changed, 64 insertions(+), 15 deletions(-)
Documentation/cvs-migration.txt +0 -0
index 3b6b494..c92ed49 100644
@@ -13,12 +13,12 @@ link:tutorial.html[tutorial introduction to git] should be sufficient.
 Developing against a shared repository
 --------------------------------------
 

Documentation/cvs-migration.txt link:tutorial.html[tutorial introduction to git] should be sufficient. · line 23

Quoted 10 lines
Documentation/cvs-migration.txt +2 -2
-Suppose a shared repository is set up in /pub/repo.git on the host
+Suppose a shared repository is set up in /pub/scm/repo.git on the host
 foo.com.  Then as an individual committer you can clone the shared
 repository over ssh with:
 
 ------------------------------------------------
-$ git clone foo.com:/pub/repo.git/ my-project
+$ git clone foo.com:/pub/scm/repo.git/ my-project
 $ cd my-project
 ------------------------------------------------

This part seems an unnecessary change.

Documentation/cvs-migration.txt other than `master`. · line 74

Quoted 12 lines
Documentation/cvs-migration.txt +4 -4
@@ -68,37 +68,79 @@ other than `master`.
 Setting Up a Shared Repository
 ------------------------------
 
-We assume you have already created a git repository for your project,
-possibly created from scratch or from a tarball (see the
-link:tutorial.html[tutorial]), or imported from an already existing CVS
-repository (see the next section).
+We assume you have admin privilege on the remote machine. Moreover, we assume
+you have already created a git repository for your project, possibly created
+from scratch or from a tarball (see the link:tutorial.html[tutorial]),or
+imported  from an already existing CVS repository (see the next section).

Don't assume the "admin privilege" part, as you do not have to.

You are newly hired to work on project-X, and the sysadm throws you into projectx group. Thesysadm further prepares a directory '/pub/project-X' and makes it mode 2775 (aka ug=rwx,o=rx,g+s).

Do you want to create a new repository for projext-X group's use? You do:

	$ cd /pub/project-X
        $ GIT_DIR=mine.git git init --shared

and you now have a usable /pub/project-X/mine.git repository for project members. I do not think you would need any chmod/chgrp after this step.

Documentation/cvs-migration.txt other than `master`. · line 81

Quoted 6 lines
Documentation/cvs-migration.txt +6 -0
+First, let's create a common directory for all the projects you'll want to
+track with git:
+
+-----------------------------------------------
+$ mkdir -p /pub/scm
+-----------------------------------------------

An organization may use different SCM depending on the projects' needs, and there is no reason members of projects A and B should be in the same group 'git' while having members of project C in group 'hg' only because A and B happen to use git. It would make more sense to either (1) make members of all three projects belong to 'src' group, or (2) make three groups, one for each project.

IOW, I do not think the above is a good suggestion.

Also with the "create new --shared repository for the project in a group's directory that has mode 2755" approach, I do not think there is any need to muck with umask either.

#2 lore raw

Junio C Hamano ha scritto:

Quoted 8 lines
Quoted 5 lines

------------------------------------------------
-$ git clone foo.com:/pub/repo.git/ my-project +$ git clone foo.com:/pub/scm/repo.git/ my-project

 $ cd my-project
 ------------------------------------------------

This part seems an unnecessary change.

Ironically, that's the same configuration of git.kernel.org. And I think is better to put immediately the project in a appropriate directory than to move it later.

Quoted 2 lines

Don't assume the "admin privilege" part, as you do not have to.

Admin privilege SHALL be assumed, as this is a first time configuration, and the best we can do is to assume it's done on a default *nix installation. Moreover, it's what HEAD documentation is already doing when it suggests to give users ssh access.

Let's suppose the user "user1" create its own repository on a remote machine. Now, he wants to selectively give write access on its repository to "user2". There's 2 cases:
1) "user2" have a local/ssh account on the machine. In this case, "user1" want to be sure only "user2" can write to the repository, so he can ask the admin to put "user1" and "user2" in the same group "projectx" or ask him to enable ACLs, still turned off in the majority of *nix systems.
2) "user2" haven't a local/ssh account. Here:
- a local/ssh account should be given to "user2", returning to 1)
- mod_dav module has to be enabled for public http dirs of "user1"
- git daemon has to be started and enabled to write on the repository.

The last 3 tasks all require admin privilege on default linux/bsd/macosx installations. However, a little distinction can be made. I'll see.

Quoted 3 lines

needs, and there is no reason members of projects A and B should be in the same group 'git'

I agree!

Quoted 2 lines

while having members of project C in
group 'hg' only because A and B happen to use git.

I agree!

Quoted 3 lines

belong to 'src' group, or (2) make three groups, one for each project.

It's exactly the point of:

+It's recommended, but not necessary, to create a specific group of commiters +for every project/repository. With root credentials launch:
+
+------------------------------------------------
+$ groupadd $group
+------------------------------------------------

What you have understood here?

Quoted 4 lines

Also with the "create new --shared repository for the project in a group's directory that has mode 2755" approach, I do not think there is any need to muck with umask either.

umask requirement is referred to previous version of git. It's still referred as actual in HEAD documentation. If it's ok for you, we could just cut away that reference.

Conclusion: i can try to amend my patch to be even more clearer. What i am saying is that official documentation, commands manuals/syntaxes should be easy enough to the first time user to set up git repositories without looking up the web for "git tutorial"/"git installation"/"git umask 002", etc. (and consider that even an expert sysadmin is a first time user, when he install and set up git the first time). Or was better a "Documentation S**KS!" bug report?

#3 lore raw

Hi,

Quoted 7 lines · Francesco Pretto

Junio C Hamano ha scritto:

Quoted 6 lines
Quoted 5 lines

------------------------------------------------
-$ git clone foo.com:/pub/repo.git/ my-project +$ git clone foo.com:/pub/scm/repo.git/ my-project

 $ cd my-project
 ------------------------------------------------
Quoted 6 lines
Quoted 2 lines

This part seems an unnecessary change.

Ironically, that's the same configuration of git.kernel.org. And I think is better to put immediately the project in a appropriate directory than to move it later.

For most people, neither path is correct. So I really don't see your point.

Ciao,
Dscho

#4 lore raw

Johannes Schindelin ha scritto:

Quoted 2 lines

For most people, neither path is correct.

Yeah, I agree. I'll try to reflect this with a neutral wording :-) In the context of the documentation, we should just take care of logical following the example.

#5 lore raw
In reply to Junio C Hamano

---
More detailed instructions on how to set up shared repositories. Removed an old reference to the need of setting umask of ssh users of shared repositories.
Added a reference to "git for CVS users" doc in git-init manual.

 Documentation/cvs-migration.txt |   61 +++++++++++++++++++++++++++++++++++----
 Documentation/git-init.txt      |    7 ++++
 2 files changed, 62 insertions(+), 6 deletions(-)
Documentation/cvs-migration.txt +55 -6
index 3b6b494..849b403 100644
@@ -71,7 +71,40 @@ Setting Up a Shared Repository
 We assume you have already created a git repository for your project,
 possibly created from scratch or from a tarball (see the
 link:tutorial.html[tutorial]), or imported from an already existing CVS
-repository (see the next section).
+repository (see the next section). Moreover, we assume you can write in a
+public accessible directory and give other users the permission to do so.
+You could need or not admin privileges to do so, depending on your
+system configuration and how you decide to export the repository.
+
+It's recommended, but not strictly necessary, to create a specific group for
+every project/repository you'll want to create, so it will be easier to give
+or prevent access of users to specific repositories. With admin privilege launch:
+
+------------------------------------------------
+$ groupadd $group
+------------------------------------------------
+
+If you want to add an user to this group, launch:
+
+------------------------------------------------
+$ usermod -a -G $group $username
+------------------------------------------------
+
+In our example, we will store the shared repository in the /pub dir, so the
+user creating it will need write permission there. There's no problems if you
+choose another directory, but you'll have to ensure it will be accessible by
+other users, on local or by remote (this could be not the case of home
+directories).
+
+If you just want to create a directory that is writable by every users that have
+a local account, launch with privileged credentials:
+
+------------------------------------------------
+$ mkdir /pub
+$ chmod a+w,+t /pub
+------------------------------------------------
+
+Now you can proceed with an unprivileged user.
 
 Assume your existing repo is at /home/alice/myproject.  Create a new "bare"
 repository (a repository without a working tree) and fetch your project into
@@ -84,21 +117,37 @@ $ git --bare init --shared
 $ git --bare fetch /home/alice/myproject master:master
 ------------------------------------------------
 
+If you previously decided to create a specific group for the committers of the
+repository, assign its ownership to that group (you'll have to be a member of it
+or switch to privileged credentials):
+
+------------------------------------------------
+$ chgrp -R $group /pub/my-repo.git
+------------------------------------------------
+
 Next, give every team member read/write access to this repository.  One
 easy way to do this is to give all the team members ssh access to the
 machine where the repository is hosted.  If you don't want to give them a
 full shell on the machine, there is a restricted shell which only allows
 users to do git pushes and pulls; see gitlink:git-shell[1].
 
-Put all the committers in the same group, and make the repository
-writable by that group:
+The following two commands will require admin privileges; first, enable
+git-shell putting it on the trusted shells list of the system:
 
 ------------------------------------------------
-$ chgrp -R $group /pub/my-repo.git
+$ echo `which git-shell` >> /etc/shells
+------------------------------------------------
+
+Now, let's create the commit users:
+
+------------------------------------------------
+$ useradd -g $group -s `which git-shell` $username
 ------------------------------------------------
 
-Make sure committers have a umask of at most 027, so that the directories
-they create are writable and searchable by other group members.
+These users will be enabled to push on repositories owned by the group $group.
+Later, you can give access to other projects simply by adding them to
+other groups. Similarly, you can prevent access to repositories simply
+removing those users from related groups.
 
 Importing a CVS archive
 -----------------------
Documentation/git-init.txt +7 -0
index 07484a4..f5f363d 100644
@@ -101,6 +101,13 @@ $ git-add .     <2>
 <2> add all existing file to the index
 
 
+SHARED REPOSITORIES
+-------------------
+
+Please refer to link:cvs-migration.html[git for CVS users], section "Setting Up
+a Shared Repository", for details on how to set up shared repositories.
+
+
 Author
 ------
 Written by Linus Torvalds <[email protected]>
#6 lore raw
Quoted 6 lines · Francesco Pretto

---
More detailed instructions on how to set up shared repositories. Removed an old reference to the need of setting umask of ssh users of shared repositories.
Added a reference to "git for CVS users" doc in git-init manual.

Honestly speaking, I am not too thrilled about making the cvs-migration document much longer than what it currently is.

Having said that, let's take a look at each hunk.

Documentation/cvs-migration.txt Setting Up a Shared Repository · line 77

Quoted 9 lines
Documentation/cvs-migration.txt +4 -1
@@ -71,7 +71,40 @@ Setting Up a Shared Repository
 We assume you have already created a git repository for your project,
 possibly created from scratch or from a tarball (see the
 link:tutorial.html[tutorial]), or imported from an already existing CVS
-repository (see the next section).
+repository (see the next section). Moreover, we assume you can write in a
+public accessible directory and give other users the permission to do so.
+You could need or not admin privileges to do so, depending on your
+system configuration and how you decide to export the repository.

I do not think the above helps anybody. Later sections say "make it writable by foo group" and such specifically, and from such descriptions, the reader either (1) understands what are prerequisite for being able to do so, or (2) is clueless enough to get puzzled by failure message from "chgrp git foo", and would not even make the connection to the above text after seeing such a failure anyway.

Documentation/cvs-migration.txt Setting Up a Shared Repository

Quoted 3 lines
Documentation/cvs-migration.txt +3 -0
+It's recommended, but not strictly necessary, to create a specific group for
+every project/repository you'll want to create, so it will be easier to give
+or prevent access of users to specific repositories.

I'd say this is not git specific nor cvs migrant specific advice but falls into a common sense category. Better not clutter the document with such, and keep it short and readable in one sitting.

Documentation/cvs-migration.txt Setting Up a Shared Repository · line 91

Quoted 11 lines
Documentation/cvs-migration.txt +11 -0
+... With admin privilege launch:
+
+------------------------------------------------
+$ groupadd $group
+------------------------------------------------
+
+If you want to add an user to this group, launch:
+
+------------------------------------------------
+$ usermod -a -G $group $username
+------------------------------------------------

I tend to edit /etc/group with vi ;-) and I suspect these two commands are specific to the distro you happen to use.

For something like "cvs migration", I really do not want a set of step-by-step hand holding instructions. Just telling them to "pick a group for the project, make repositories belonging to the project owned by that group, and make them writable by the group members" should be enough. CVS migrants may not know how the world works with respect to git, but they are not idiots. Introductory UNIX command guide is not the goal of the document. Try to tell them _what_ needs to happen, not _how_, when that level of the detail is sufficient.

Documentation/cvs-migration.txt Setting Up a Shared Repository · line 97

Quoted 5 lines
Documentation/cvs-migration.txt +5 -0
+In our example, we will store the shared repository in the /pub dir, so the
+user creating it will need write permission there. There's no problems if you
+choose another directory, but you'll have to ensure it will be accessible by
+other users, on local or by remote (this could be not the case of home
+directories).

Everything up to "by other users" is good, but ", on local or by..." are unnecessary. If your stress is on shared repositories, do not even mention "home", unless you are very convinced that it is a very typical use case, in which case you should be certain about what you recommend and there is no place for expression like "this could be ..." for such a sure recommendation.

Documentation/cvs-migration.txt Setting Up a Shared Repository · line 105

Quoted 7 lines
Documentation/cvs-migration.txt +7 -0
+If you just want to create a directory that is writable by every users that have
+a local account, launch with privileged credentials:
+
+------------------------------------------------
+$ mkdir /pub
+$ chmod a+w,+t /pub
+------------------------------------------------

Unneeded --- again, this is not a UNIX command guide --- and wrong. You do not necessarily need to "launch with privileged credentials" to do this anyway. As long as you can chmod the directory, that is all that is needed.

Documentation/cvs-migration.txt $ git --bare init --shared · line 132

Quoted 5 lines
Documentation/cvs-migration.txt +0 -0
 Next, give every team member read/write access to this repository.  One
 easy way to do this is to give all the team members ssh access to the
 machine where the repository is hosted.  If you don't want to give them a
 full shell on the machine, there is a restricted shell which only allows
 users to do git pushes and pulls; see gitlink:git-shell[1].

This part is a very good advice. It is git specific knowledge new cvs migrants need to learn. Oops, the reason this part is good is because it is from the original text --- no wonder ;-).

Documentation/cvs-migration.txt $ git --bare init --shared · line 139

Quoted 9 lines
Documentation/cvs-migration.txt +4 -3
-Put all the committers in the same group, and make the repository
-writable by that group:
+The following two commands will require admin privileges; first, enable
+git-shell putting it on the trusted shells list of the system:
 
 ------------------------------------------------
-$ chgrp -R $group /pub/my-repo.git
+$ echo `which git-shell` >> /etc/shells
+------------------------------------------------

Saying that /etc/shells may control what shells are allowed as the login shell on many systems is probably a very good idea. However, there is no need for an introductory UNIX guide that is even WRONG. Why "echo foo" when just "foo" would work? Why aren't you checking if /etc/shells already have git-shell defined?

Documentation/cvs-migration.txt $ git --bare init --shared · line 150

Quoted 13 lines
Documentation/cvs-migration.txt +9 -2
+
+Now, let's create the commit users:
+
+------------------------------------------------
+$ useradd -g $group -s `which git-shell` $username
 ------------------------------------------------
 
-Make sure committers have a umask of at most 027, so that the directories
-they create are writable and searchable by other group members.
+These users will be enabled to push on repositories owned by the group $group.
+Later, you can give access to other projects simply by adding them to
+other groups. Similarly, you can prevent access to repositories simply
+removing those users from related groups.

The original text's point about umask does not apply to modern git anymore, so the above lines can simply deleted. Almost everything else you added to this hunk is unnecessary UNIX guide.

Quoted 6 lines
Documentation/git-init.txt +0 -0
@@ -101,6 +101,13 @@ $ git-add .     <2>
 <2> add all existing file to the index
 
 

Documentation/git-init.txt $ git-add . <2> · line 113

Quoted 10 lines
Documentation/git-init.txt +7 -0
+SHARED REPOSITORIES
+-------------------
+
+Please refer to link:cvs-migration.html[git for CVS users], section "Setting Up
+a Shared Repository", for details on how to set up shared repositories.
+
+
 Author
 ------
 Written by Linus Torvalds <[email protected]>

This part is a good idea, but instead of putting it at the bottom, it may make it more prominent to have this at the end of option description for "--shared".

#7 lore raw

Junio C Hamano ha scritto:

Quoted 4 lines

Honestly speaking, I am not too thrilled about making the cvs-migration document much longer than what it currently is.

Honestly speaking, you've spent too much time in looking for every possible objections against these simple additions. At least it should be less than the time I've spent in measuring every single word of this patch, hoping you could consider them for inclusion. You gave me lot of attentions (I am grateful of this, really) so I should probably be surprised of the cleanliness of git code, of the rigor of the code style, of the clarity of the documentation. But unfortunately, I am not. I simply tried to make this document more useful and helpful for a wider audience of people that could ever consider of using git in their life. And yes, I decided to so because I had trouble myself during initial configurations. What's the problem if a document called "git for CVS users" is more explicated? What's the problem if it contains as many as possible informations to set up git in a viable way and, hopefully, to learn something on how it does work?

I'm sad. Not only because you refused a documentation patch, but because i could have sent a "Bug: Documentation Sucks!" to the ml and i would have obtained the same thing: nothing.

Francesco

P.S.:

Quoted 6 lines
Quoted 3 lines

+------------------------------------------------
+$ usermod -a -G $group $username
+------------------------------------------------

I tend to edit /etc/group with vi ;-) and I suspect these two commands are specific to the distro you happen to use.

You were right with usermod (groupadd is ok): that "-a" switch is redhat syntax. Six years of Linux Standard Base and this is still an unsolved problem...

#8 lore raw
Quoted 5 lines · Francesco Pretto

Junio C Hamano ha scritto:

Quoted 4 lines

Honestly speaking, I am not too thrilled about making the cvs-migration document much longer than what it currently is.

Maybe the description of setting up a shared repository should go to the user-manual and cvs-migration should refer to the user-manual, instead of the other way round. I don't like the idea that the user-manual is referring to a CVS specific guide. The user manual should be as self-contained as possible.

Quoted 13 lines

Honestly speaking, you've spent too much time in looking for every possible objections against these simple additions. At least it should be less than the time I've spent in measuring every single word of this patch, hoping you could consider them for inclusion. You gave me lot of attentions (I am grateful of this, really) so I should probably be surprised of the cleanliness of git code, of the rigor of the code style, of the clarity of the documentation. But unfortunately, I am not. I simply tried to make this document more useful and helpful for a wider audience of people that could ever consider of using git in their life. And yes, I decided to so because I had trouble myself during initial configurations. What's the problem if a document called "git for CVS users" is more explicated? What's the problem if it contains as many as possible informations to set up git in a viable way and, hopefully, to learn something on how it does work?

Quoted 3 lines

I'm sad. Not only because you refused a documentation patch, but because i could have sent a "Bug: Documentation Sucks!" to the ml and i would have obtained the same thing: nothing.

Don't be unfair. Junio made clear that the documentation should not be cluttered with an introduction to Unix commands. But at least two points (git-shell, git-init.txt) would be accepted if you sent an cleaned-up patch.

I have no good idea how to reconcile your idea of giving more guidance to Unix commands with the idea of having a concise document that assumes a reader with decent Unix knowledge

Maybe you could just add some references to the distribution specific information, or just refer to the man pages.

Maybe you could move the introductory comments to a FAQ-like appendix. It could give brief hints on
"How to set up a user account?",
"How to setup a world-writable directory?"
I'm a bit reluctant to this because we'd need to maintain such information. But I suspect that some users would find them helpful.

One last comment: discussing patches is how the world works on the git mailing list. It happend to me, too, that patches were rejected after a brief or after a lengthy discussion. So, yes, finally sometimes there is no change. But often the discussions reveal a better way of achieving the original goal. Nonetheless, it can be frustrating to the original author.

Thanks for you effort of improving the documentation.

Steffen

#9 lore raw
Quoted 8 lines · Steffen Prohaska
Quoted 5 lines · Francesco Pretto

Junio C Hamano ha scritto:

Quoted 4 lines

Honestly speaking, I am not too thrilled about making the cvs-migration document much longer than what it currently is.

Quoted 5 lines

Maybe the description of setting up a shared repository should go to the user-manual and cvs-migration should refer to the user-manual, instead of the other way round. I don't like the idea that the user-manual is referring to a CVS specific guide. The user manual should be as self-contained as possible.

I'd be interested in patches that did that. If somebody wants to work on that, they might want to start with

git://linux-nfs.org/~bfields/git.git docwork-foreign-scms

which has the skeleton of an "interoperating with foreign scms" chapter.

The thing that's kept me from working on this in the past is that it's a bit of a step backwards for someone that *just* wants to get to the cvs-migration stuff, since now it may appear you have to plow through the rest of the manual to get to it.

We could address that with clearer dependency information ("before reading this chapter, read chapters 1 and 3..."), and/or by providing some more links (e.g. repopulate the howto directory with links to some chapters that address popular questions).

--b.

#10 lore raw
In reply to Francesco Pretto
Quoted 31 lines · Francesco Pretto

Junio C Hamano ha scritto:

Quoted 4 lines

Honestly speaking, I am not too thrilled about making the cvs-migration document much longer than what it currently is.

Honestly speaking, you've spent too much time in looking for every possible
objections against these simple additions. At least it should be less than the
time I've spent in measuring every single word of this patch, hoping you could
consider them for inclusion. You gave me lot of attentions (I am grateful of this,
really) so I should probably be surprised of the cleanliness of git code, of the
rigor of the code style, of the clarity of the documentation. But unfortunately,
I am not. I simply tried to make this document more useful and helpful for a
wider audience of people that could ever consider of using git in their life.
And yes, I decided to so because I had trouble myself during initial configurations.
What's the problem if a document called "git for CVS users" is more explicated?
What's the problem if it contains as many as possible informations to set up
git in a viable way and, hopefully, to learn something on how it does work?

Quoted 5 lines

I'm sad. Not only because you refused a documentation patch, but because i could
have sent a "Bug: Documentation Sucks!" to the ml and i would have obtained the
same thing: nothing.

On the contrary, I think you received some excellent, high-quality feedback. The process that you've been participating in over the last few days is exactly why the Git codebase is as good as it is; only the very best patches get accepted, and those which aren't "the very best" receive detailed feedback that help the submitter to turn weak patches into strong ones. The process works very well and the proof is in the pudding (the quality of the product).

Cheers,
Wincent

#11 lore raw
In reply to Francesco Pretto

Hi,

Quoted 7 lines · Francesco Pretto

I simply tried to make this document more useful and helpful for a wider audience of people that could ever consider of using git in their life. And yes, I decided to so because I had trouble myself during initial configurations. What's the problem if a document called "git for CVS users" is more explicated? What's the problem if it contains as many as possible informations to set up git in a viable way and, hopefully, to learn something on how it does work?

I refrained from commenting on that patch until now, but alas, you force me to.

I was pretty unimpressed by the additions, as they seemed large in volume, but small in content.

Remember, those who read "git for CVS users" are _unwilling_ to spend the time reading git documentation (at least for the most part). If they encounter something which is not useful to them, they will not just ignore it, they will stop reading.

Ciao,
Dscho

#12 lore raw
Quoted 4 lines · Johannes Schindelin

Remember, those who read "git for CVS users" are _unwilling_ to spend the time reading git documentation (at least for the most part). If they encounter something which is not useful to them, they will not just ignore it, they will stop reading.

That might overstate the case a little, but I definitely agree that we should get people to the information they need as quickly as possible, and that adding more beginning-unix-administration will interfere with that goal for the intended audience.

And it's not just here--there's probably lots of basic unix-commandline stuff that we could include with the user-manual (how find/xargs pipes work, etc...), and that would similarly help one possible audience at the expense of bogging it down for another audience.

I think the way to help people without those prerequisites is by clearer statements of prerequisites, and references to documentation elsewhere where appropriate.

--b.

#13 lore raw
In reply to Johannes Schindelin

Hello,

Quoted 6 lines

Remember, those who read "git for CVS users" are _unwilling_ to spend the time reading git documentation (at least for the most part). If they encounter something which is not useful to them, they will not just ignore it, they will stop reading.

I must disagree with this analysis (although I didn't read the content of the patch you are commenting). People that are not really interested in git will find many reasons to stop reading the manual anyway. Those who really want to migrate (such as we did) are looking for every tiny bit of information. (We googled git commands and error messages because we didn't
find what we needed in the docs)
The docs are not perfect and somewhat unequal in content but I prefer more information than less, at this particular stage of git development.

- Aghiles.

#14 lore raw
Quoted 8 lines · Aghiles

Hello,

Quoted 6 lines

Remember, those who read "git for CVS users" are _unwilling_ to spend the time reading git documentation (at least for the most part). If they encounter something which is not useful to them, they will not just ignore it, they will stop reading.

Quoted 6 lines

I must disagree with this analysis (although I didn't read the content of the patch you are commenting). People that are not really interested in git will find many reasons to stop reading the manual anyway. Those who really want to migrate (such as we did) are looking for every tiny bit of information. (We googled git commands and error messages because we didn't
find what we needed in the docs)

Could you be a bit more specific? What are the most important points that you did not found in the documentation?

It would be interesting if you could share some details. Sending patches that would fix the deficiencies would even be superior ;)

Quoted 2 lines

The docs are not perfect and somewhat unequal in content but I prefer more information than less, at this particular stage of git development.

I agree if it is git specific information. But, personally, I'd get a bit annoyed if a git specific document tried to teach me how to manage Unix accounts. BTW, useradd and such would not help me at all, because I need to talk to my admin anyway and he adds an account to the LDAP database.

Steffen

#15 lore raw
Quoted 4 lines · Steffen Prohaska

BTW, useradd and such
would not help me at all, because I need to talk to my admin anyway and he adds an account to the LDAP database.

I suspect this is the case for most companies looking to switch to git. It certainly is here. Personally, I tend to find documents stooping to toddler-level a bit insulting unless they're marked as "walkthrough" or "for beginners" or some such. Especially if they are obviously not correct for all environments.

Signature · 3 lines
Andreas Ericsson                   [email protected]
OP5 AB                             www.op5.se
Tel: +46 8-230225                  Fax: +46 8-230231
#16 lore raw
In reply to Johannes Schindelin

Johannes Schindelin ha scritto:

Quoted 5 lines

Remember, those who read "git for CVS users" are _unwilling_ to spend the time reading git documentation (at least for the most part). If they encounter something which is not useful to them, they will not just ignore it, they will stop reading.

That's document isn't for CVS users only. It's referred on the "Git User's Manual" speaking about shared repositories in general. I hope you agree that the time to make your eyes jump a little below is less than the time spent googling around if you don't find what you are looking for.

#17 lore raw
In reply to Johannes Schindelin
Quoted 4 lines · Johannes Schindelin

Remember, those who read "git for CVS users" are _unwilling_ to spend the time reading git documentation (at least for the most part). If they encounter something which is not useful to them, they will not just ignore it, they will stop reading.

People who read documentation do this only in order to avoid reading documentation, anyway? This must be about the most stupid argument to refrain from augmenting documentation I have heard in a long time.

It may well be possible that some of the proposed additions don't have a good place in the document. I have not checked so myself. But the above criticism is not constructive for documentation writers since its logical conclusion would boil down to "don't bother writing any documentation".

Signature · 1 line
David Kastrup