Re: New to git: sorry for obvious question.
On Mon, Feb 04, 2008 at 09:56:00AM +0000, Paul Gardiner wrote:
Show 12 quoted lines
> Hi,
>
> I've moved a project from CVS on sourceforge to git on repo.or.cz. I
> want a local mirror on my own home server, so that it appears amongst
> the projects shown by my own gitweb set up, and so it gets caught by
> my backup system. I've created the mirror with
>
> git clone --bare <remote-url> <local-dir>
>
> and that seems fine. But how do I now keep it up to date. I was
> guessing a cron job doing some sort of git pull, but pull doesn't
> look to work on --bare proj.git type repositories.
You want git fetch. Git pull also updates the working copy, which you don't have.
Also, git clone --bare doesn't set up the origin configuration, and I
have to do it by hand:
git config remote.origin.url "$url"
git config remote.origin.fetch "+refs/heads/*:refs/heads/*"
As for keeping clones up to date, I include a script I use daily for that purpose.
--
Luciano Rocha <luciano@eurotux.com>
Eurotux Informática, S.A. <http://www.eurotux.com/>
#!/bin/bash
cd /media/stuff/src || exit 1
lockf=/tmp/.uprepo.lock
lockfile -60 -l 36000 -r 20 $lockf || exit 1
TL=$((20*60))
running()
{
kill -0 $* &> /dev/null
}
tl()
{
local max=$(($1+SECONDS))
shift
exec "$@" &
while running $! &> /dev/null && [ $max -ge $SECONDS ]; do sleep 1; done
if running $!; then
kill $! &> /dev/null
sleep 1
kill -9 $! &> /dev/null
fi
}
trap "rm -f $lockf" EXIT
shopt -s dotglob
for i in *.git */*.git; do
[ -h "$i" ] && continue
[ -d "$i" ] || continue
d="${i%/.git}"
echo $d
if [ "$d" = "$i" ]; then
(cd "$d" && tl $TL git fetch) 2>&1 | nocr
elif [ -d "$i/svn" ]; then
(cd "$d" && tl $TL git svn fetch) 2>&1 | nocr
elif [ -e "$d/.cvsurl" ]; then
(cd "$d" && tl $TL git cvsimport $(<.cvsurl)) 2>&1 | nocr
elif [ -e "$d/.svnurl" ]; then
(cd "$d" && tl $TL git svnimport -r $(<.svnurl)) 2>&1 | nocr
else
(cd "$d" && tl $TL git pull) 2>&1 | nocr
fi
done
for i in */*.hg */*/*.hg; do
[ -h "$i" ] && continue
[ -d "$i" ] || continue
d="${i%/.hg}"
echo $d
(cd "$d" && tl $TL hg pull)
done
for i in */*_darcs; do
[ -h "$i" ] && continue
[ -d "$i" ] || continue
d="${i%/_darcs}"
echo $d
(cd "$d" && tl $TL darcs pull -aq)
done
for i in */.svn; do
[ -h "$i" ] && continue
[ -d "$i" ] || continue
d="${i%/.svn}"
echo $d
(cd "$d" && tl $TL svn up -q)
done
for i in */CVS; do
[ -h "$i" ] && continue
[ -d "$i" ] || continue
d="${i%/CVS}"
echo $d
(cd "$d" && tl $TL cvs -Q -z3 up -P)
done
#!/usr/bin/perl
use warnings;
use strict;
-t && exec "/bin/cat";
undef $/;
my $in = <>;
$in =~ s/^.*\r(?!\n)//gm;
print $in;