Julian Gilbey wrote:
> On Sun, May 19, 2013 at 12:49:08PM -0700, Jonathan Nieder wrote:
>> Maybe that suggests a way to make a smooth transition:
>>
>> 1. preinst installs symlinks /var/lib/git/* -> /var/cache/git/*
>> 2. updated conffiles refer to /var/lib/git
>> 3. NEWS.Debian helps admins move the data to /var/lib/git
>
> That could work, indeed.
Ok, let's do that. A more complete automatic migration can always be
built on top of this later if someone writes the scripts for it.
> Though I would recommend /srv/git instead of /var/lib/git, as that is
> the directory recommended by the git documentation.
The FHS says
The methodology used to name subdirectories of /srv is
unspecified as there is currently no consensus on how this
should be done. One method for structuring data under /srv is
by protocol, eg. ftp, rsync, www, and cvs. On large systems
it can be useful to structure /srv by administrative context,
such as /srv/physics/www, /srv/compsci/cvs, etc. This setup
will differ from host to host. Therefore, no program should
rely on a specific subdirectory structure of /srv existing or
data necessarily being stored in /srv.
which makes /srv/git a reasonable example for the documentation but
not something I can set up in the packaging. Users can always switch
to that on their on systems, though.
Here's a rough patch for step 1. Step 2 would be to make preinst
automatically create the appropriate symlinks to save most sysadmins
from the trouble of having to do anything to keep their system
working. Completely untested.
Thanks again for your help so far.
diff --git i/debian/changelog w/debian/changelog
index 86f8f8e0..03c5ff78 100644
--- i/debian/changelog
+++ w/debian/changelog
@@ -1,3 +1,21 @@
+git (1:1.8.3~rc3-1.1) experimental; urgency=low
+
+ * use /var/lib/git instead of /var/cache/git as default git
+ project root to comply with the Filesystem Hierarchy Standard
+ (thx Julian Gilbey; closes: #483788):
+ * git-daemon.default, git-daemon.in, git-daemon/run: use
+ base path of /var/lib and projectroot of /var/lib/git.
+ * gitweb.conf: $projectroot = "/var/lib/git".
+ * rules: package git: install empty /var/lib/git directory
+ instead of /var/cache/git.
+ * git.README.Debian, git-daemon-run.README.Debian,
+ git-daemon-sysvinit.README.Debian, gitweb.README.Debian:
+ update for the new project root.
+ * git.NEWS.Debian: advertise the change and explain how to
+ adapt to it.
+
+ -- Jonathan Nieder <[email protected]> Mon, 20 May 2013 00:42:35 -0700
+
git (1:1.8.3~rc3-1) experimental; urgency=low
* new upstream release candidate.
diff --git i/debian/git-daemon-run.README.Debian
w/debian/git-daemon-run.README.Debian
index 943096aa..ffde9a6a 100644
--- i/debian/git-daemon-run.README.Debian
+++ w/debian/git-daemon-run.README.Debian
@@ -17,13 +17,13 @@ have an LSB compatible interface to control it:
ln -s /usr/bin/sv /etc/init.d/git-daemon
/etc/init.d/git-daemon status
-The git daemon by default looks into the directory /var/cache/git/ for
+The git daemon by default looks into the directory /var/lib/git/ for
repositories (this is configured in /etc/sv/git-daemon/run). It expects
the repositories' .git subdirectories in that directory, symlinks
pointing to the corresponding subdirectories in the repositories are just
fine, e.g.:
- ln -s ~pape/git/foo/.git /var/cache/git/foo.git
+ ln -s ~pape/git/foo/.git /var/lib/git/foo.git
This makes 'git-clone git://git.example.org/git/foo' to clone the foo
repository on remote machines work.
diff --git i/debian/git-daemon-sysvinit.README.Debian
w/debian/git-daemon-sysvinit.README.Debian
index 320d7001..cea76b64 100644
--- i/debian/git-daemon-sysvinit.README.Debian
+++ w/debian/git-daemon-sysvinit.README.Debian
@@ -17,13 +17,13 @@ After that, the git daemon can be started with:
# /etc/init.d/git-daemon start
-The git daemon by default looks into the directory /var/cache/git/ for
+The git daemon by default looks into the directory /var/lib/git/ for
repositories (this is configured in /etc/default/git-daemon). It expects
the repositories' .git subdirectories in that directory, symlinks
pointing to the corresponding subdirectories in the repositories are just
fine, e.g.:
- ln -s ~daniel/git/foo/.git /var/cache/git/foo.git
+ ln -s ~daniel/git/foo/.git /var/lib/git/foo.git
This makes 'git-clone git://git.example.org/git/foo' to clone the foo
repository on remote machines work.
diff --git i/debian/git-daemon.default w/debian/git-daemon.default
index 20208055..fd62168c 100644
--- i/debian/git-daemon.default
+++ w/debian/git-daemon.default
@@ -8,7 +8,7 @@
GIT_DAEMON_ENABLE=false
GIT_DAEMON_USER=gitdaemon
-GIT_DAEMON_DIRECTORY=/var/cache/git
+GIT_DAEMON_DIRECTORY=/var/lib/git
# Additional options that are passed to the Daemon.
GIT_DAEMON_OPTIONS=""
diff --git i/debian/git-daemon.init w/debian/git-daemon.init
index 7bfe17d9..cc98a00b 100644
--- i/debian/git-daemon.init
+++ w/debian/git-daemon.init
@@ -26,8 +26,8 @@ SCRIPTNAME=/etc/init.d/$NAME
[ -r /etc/default/$NAME ] && . /etc/default/$NAME
GIT_DAEMON_USER=${GIT_DAEMON_USER:-gitdaemon}
-GIT_DAEMON_BASE_PATH=${GIT_DAEMON_BASE_PATH:-/var/cache}
-GIT_DAEMON_DIRECTORY=${GIT_DAEMON_DIRECTORY:-/var/cache/git}
+GIT_DAEMON_BASE_PATH=${GIT_DAEMON_BASE_PATH:-/var/lib}
+GIT_DAEMON_DIRECTORY=${GIT_DAEMON_DIRECTORY:-/var/lib/git}
DAEMON_ARGS="--user=$GIT_DAEMON_USER --pid-file=$PIDFILE --detach"
DAEMON_ARGS="$DAEMON_ARGS --reuseaddr --verbose $GIT_DAEMON_OPTIONS"
diff --git i/debian/git-daemon/run w/debian/git-daemon/run
index ef24724b..b8655266 100755
--- i/debian/git-daemon/run
+++ w/debian/git-daemon/run
@@ -3,4 +3,4 @@ exec 2>&1
echo 'git-daemon starting.'
exec chpst -ugitdaemon \
"$(git --exec-path)"/git-daemon --verbose --reuseaddr \
- --base-path=/var/cache /var/cache/git
+ --base-path=/var/lib /var/lib/git
diff --git i/debian/git.NEWS.Debian w/debian/git.NEWS.Debian
index 8502b032..ab6ab78b 100644
--- i/debian/git.NEWS.Debian
+++ w/debian/git.NEWS.Debian
@@ -1,3 +1,25 @@
+git (1:1.8.2~rc3-1.1) experimental; urgency=low
+
+ The Debian-provided configurations of gitweb and git-daemon have
+ been changed to look for repositories under /var/lib/git instead
+ of /var/cache/git.
+
+ To ensure your existing repositories remain accessible:
+
+ rmdir /var/lib/git
+ mv /var/cache/git /var/lib/git
+
+ Or:
+
+ cd /var/lib/git
+ mv ../../cache/git/* .
+
+ You may also want to adjust your inetd, rsyncd, and web server
+ configuration to use the new base path.
+ See /usr/share/doc/git/README.Debian for details.
+
+ -- Jonathan Nieder <[email protected]> Sun, 19 May 2013 21:16:46 -0700
+
git (1:1.8.2~rc0-1) experimental; urgency=low
The default behavior of "git push" when run without specifying any
diff --git i/debian/git.README.Debian w/debian/git.README.Debian
index b96faf97..7a25a5c7 100644
--- i/debian/git.README.Debian
+++ w/debian/git.README.Debian
@@ -9,8 +9,8 @@ repositories. This package provides the git-daemon program, to
enable a
git-daemon service, configure inetd(8) to launch it on demand, or install the
git-daemon-run package to run it permanently:
cat >> /etc/inetd.conf <<EOF
-git stream tcp4 nowait nobody /usr/bin/git git daemon --inetd
--base-path=/var/cache /var/cache/git
-git stream tcp6 nowait nobody /usr/bin/git git daemon --inetd
--base-path=/var/cache /var/cache/git
+git stream tcp4 nowait nobody /usr/bin/git git daemon --inetd
--base-path=/var/lib /var/lib/git
+git stream tcp6 nowait nobody /usr/bin/git git daemon --inetd
--base-path=/var/lib /var/lib/git
EOF
Or:
@@ -22,12 +22,12 @@ logs:
sv stat git-daemon
cat /var/log/git-daemon/current
-The git daemon by default looks into the directory /var/cache/git/ for
+The git daemon by default looks into the directory /var/lib/git/ for
repositories (this is configured in /etc/sv/git-daemon/run). It expects
-the repositories' .git subdirectories in /var/cache/git/, symlinks pointing
+the repositories' .git subdirectories in /var/lib/git/, symlinks pointing
to the corresponding subdirectories in the repositories are just fine, e.g.:
- ln -s ~pape/git/foo/.git /var/cache/git/foo.git
+ ln -s ~pape/git/foo/.git /var/lib/git/foo.git
Now git-clone git://git.example.org/git/repo will work.
@@ -36,7 +36,7 @@ repositories. You then need to add a stanza to
/etc/rsyncd.conf that looks
like this:
[git]
- path = /var/cache/git
+ path = /var/lib/git
readonly = yes
Now git-clone rsync://git.example.org/git/repo will work.
@@ -52,12 +52,12 @@ configuration that looks like this:
ServerAdmin [email protected]
HeaderName HEADER
# bogus but safe DocumentRoot
- DocumentRoot /var/cache/git
+ DocumentRoot /var/lib/git
ErrorLog /var/log/apache2/git.example.org-error.log
CustomLog /var/log/apache2/git.example.org-access.log combined
Alias /robots.txt /var/www/cvs.robots.txt
Alias /static /usr/share/gitweb/static
- Alias /git /var/cache/git
+ Alias /git /var/lib/git
ScriptAlias / /usr/share/gitweb/gitweb.cgi
RedirectMatch permanent "^/~(.*)$" "http://example.org/~$1"
</VirtualHost>
diff --git i/debian/gitweb.README.Debian w/debian/gitweb.README.Debian
index f2ea2315..331935d5 100644
--- i/debian/gitweb.README.Debian
+++ w/debian/gitweb.README.Debian
@@ -1,12 +1,12 @@
gitweb for Debian
-----------------
-The gitweb CGI by default looks into the directory /var/cache/git/ for
+The gitweb CGI by default looks into the directory /var/lib/git/ for
browsable repositories (this is configured in /etc/gitweb.conf). It expects
-the repositories' .git subdirectories in /var/cache/git/, symlinks pointing
+the repositories' .git subdirectories in /var/lib/git/, symlinks pointing
to the corresponding subdirectories in the repositories are just fine, e.g.:
- ln -s ~pape/git/foo/.git /var/cache/git/foo.git
+ ln -s ~pape/git/foo/.git /var/lib/git/foo.git
On systems with an Apache webserver, gitweb is automatically made available at
http://localhost/gitweb. You can deactivate it by commenting out the first
diff --git i/debian/gitweb.conf w/debian/gitweb.conf
index ea99551c..1c398c65 100644
--- i/debian/gitweb.conf
+++ w/debian/gitweb.conf
@@ -1,5 +1,5 @@
# path to git projects (<project>.git)
-$projectroot = "/var/cache/git";
+$projectroot = "/var/lib/git";
# directory to use for temp files
$git_temp = "/tmp";
diff --git i/debian/rules w/debian/rules
index 3693ec69..37381e8b 100755
--- i/debian/rules
+++ w/debian/rules
@@ -114,7 +114,7 @@ install-arch: deb-checkdir deb-checkuid build-arch-stamp
rm -rf '$(GIT)'
install -d -m0755 '$(GIT)'/usr/bin
DESTDIR='$(GIT)' $(MAKE) install $(OPTS)
- install -d -m0755 '$(GIT)'/var/cache/git
+ install -d -m0755 '$(GIT)'/var/lib/git
rm -f '$(GIT)'/usr/share/perl5/Error.pm
rm -rf '$(GIT)'/usr/share/man
chmod 644 '$(GIT)'/usr/share/perl5/Git.pm
--
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]