1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-05-27 05:16:17 +02:00

user-manual: reorganize public git repo discussion

Helping a couple people set up public repos recently, I wanted to point
them at this piece of the user manual, but found it wasn't as helpful as
it could be:

	- It starts with a big explanation of why you'd want a public
	  repository, not necessary in their case since they already knew
	  why they wanted that.  So, separate that out.
	- It skimps on some of the git-daemon details, and puts the http
	  export information first.  Fix that.

Also group all the public repo subsections into a single section, and do
some miscellaneous related editing.

Signed-off-by: "J. Bruce Fields" <bfields@citi.umich.edu>
This commit is contained in:
J. Bruce Fields 2007-05-15 00:00:29 -04:00
parent 629d9f785f
commit eda6944919

View File

@ -1674,31 +1674,30 @@ The final result will be a series of commits, one for each patch in
the original mailbox, with authorship and commit log message each
taken from the message containing each patch.
[[setting-up-a-public-repository]]
Setting up a public repository
------------------------------
[[public-repositories]]
Public git repositories
-----------------------
Another way to submit changes to a project is to simply tell the
maintainer of that project to pull from your repository, exactly as
you did in the section "<<getting-updates-with-git-pull, Getting
updates with git pull>>".
Another way to submit changes to a project is to tell the maintainer of
that project to pull the changes from your repository using git-pull[1].
In the section "<<getting-updates-with-git-pull, Getting updates with
git pull>>" we described this as a way to get updates from the "main"
repository, but it works just as well in the other direction.
If you and maintainer both have accounts on the same machine, then
then you can just pull changes from each other's repositories
directly; note that all of the commands (gitlink:git-clone[1],
git-fetch[1], git-pull[1], etc.) that accept a URL as an argument
will also accept a local directory name; so, for example, you can
use
If you and the maintainer both have accounts on the same machine, then
you can just pull changes from each other's repositories directly;
commands that accepts repository URLs as arguments will also accept a
local directory name:
-------------------------------------------------
$ git clone /path/to/repository
$ git pull /path/to/other/repository
-------------------------------------------------
If this sort of setup is inconvenient or impossible, another (more
common) option is to set up a public repository on a public server.
This also allows you to cleanly separate private work in progress
from publicly visible work.
However, the more common way to do this is to maintain a separate public
repository (usually on a different host) for others to pull changes
from. This is usually more convenient, and allows you to cleanly
separate private work in progress from publicly visible work.
You will continue to do your day-to-day work in your personal
repository, but periodically "push" changes from your personal
@ -1717,32 +1716,52 @@ like this:
| they push V
their public repo <------------------- their repo
Now, assume your personal repository is in the directory ~/proj. We
first create a new clone of the repository:
[[setting-up-a-public-repository]]
Setting up a public repository
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Assume your personal repository is in the directory ~/proj. We
first create a new clone of the repository and tell git-daemon that it
is meant to be public:
-------------------------------------------------
$ git clone --bare ~/proj proj.git
$ touch proj.git/git-daemon-export-ok
-------------------------------------------------
The resulting directory proj.git contains a "bare" git repository--it is
just the contents of the ".git" directory, without a checked-out copy of
a working directory.
just the contents of the ".git" directory, without any files checked out
around it.
Next, copy proj.git to the server where you plan to host the
public repository. You can use scp, rsync, or whatever is most
convenient.
If somebody else maintains the public server, they may already have
set up a git service for you, and you may skip to the section
[[exporting-via-git]]
Exporting a git repository via the git protocol
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This is the preferred method.
If someone else administers the server, they should tell you what
directory to put the repository in, and what git:// url it will appear
at. You can then skip to the section
"<<pushing-changes-to-a-public-repository,Pushing changes to a public
repository>>", below.
Otherwise, the following sections explain how to export your newly
created public repository:
Otherwise, all you need to do is start gitlink:git-daemon[1]; it will
listen on port 9418. By default, it will allow access to any directory
that looks like a git directory and contains the magic file
git-daemon-export-ok. Passing some directory paths as git-daemon
arguments will further restrict the exports to those paths.
You can also run git-daemon as an inetd service; see the
gitlink:git-daemon[1] man page for details. (See especially the
examples section.)
[[exporting-via-http]]
Exporting a git repository via http
-----------------------------------
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The git protocol gives better performance and reliability, but on a
host with a web server set up, http exports may be simpler to set up.
@ -1774,20 +1793,11 @@ link:howto/setup-git-server-over-http.txt[setup-git-server-over-http]
for a slightly more sophisticated setup using WebDAV which also
allows pushing over http.)
[[exporting-via-git]]
Exporting a git repository via the git protocol
-----------------------------------------------
This is the preferred method.
For now, we refer you to the gitlink:git-daemon[1] man page for
instructions. (See especially the examples section.)
[[pushing-changes-to-a-public-repository]]
Pushing changes to a public repository
--------------------------------------
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Note that the two techniques outline above (exporting via
Note that the two techniques outlined above (exporting via
<<exporting-via-http,http>> or <<exporting-via-git,git>>) allow other
maintainers to fetch your latest changes, but they do not allow write
access, which you will need to update the public repository with the
@ -1839,7 +1849,7 @@ details.
[[setting-up-a-shared-repository]]
Setting up a shared repository
------------------------------
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Another way to collaborate is by using a model similar to that
commonly used in CVS, where several developers with special rights
@ -1848,8 +1858,8 @@ link:cvs-migration.txt[git for CVS users] for instructions on how to
set this up.
[[setting-up-gitweb]]
Allow web browsing of a repository
----------------------------------
Allowing web browsing of a repository
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The gitweb cgi script provides users an easy way to browse your
project's files and history without having to install git; see the file