vcs-mirror r2 - trunk
- From: johncarr svn gnome org
- To: svn-commits-list gnome org
- Subject: vcs-mirror r2 - trunk
- Date: Tue, 24 Jun 2008 20:08:33 +0000 (UTC)
Author: johncarr
Date: Tue Jun 24 20:08:33 2008
New Revision: 2
URL: http://svn.gnome.org/viewvc/vcs-mirror?rev=2&view=rev
Log:
Initial checkin
Added:
trunk/MAINTAINERS
trunk/bzr-create.sh (contents, props changed)
trunk/bzr-update.sh (contents, props changed)
trunk/git-create.sh (contents, props changed)
trunk/git-update.sh (contents, props changed)
trunk/mirror.py (contents, props changed)
trunk/svn-create.sh (contents, props changed)
trunk/svn-update.sh (contents, props changed)
Modified:
trunk/ (props changed)
Added: trunk/MAINTAINERS
==============================================================================
--- (empty file)
+++ trunk/MAINTAINERS Tue Jun 24 20:08:33 2008
@@ -0,0 +1,3 @@
+John Carr
+E-mail: john carr unrouted co uk
+Userid: johncarr
Added: trunk/bzr-create.sh
==============================================================================
--- (empty file)
+++ trunk/bzr-create.sh Tue Jun 24 20:08:33 2008
@@ -0,0 +1,8 @@
+#!/bin/sh
+MODULE=$1
+
+cd /srv/bzr/
+bzr svn-import file:///srv/svn/$MODULE
+
+# make trunk searchable
+bzr index $MODULE/trunk
Added: trunk/bzr-update.sh
==============================================================================
--- (empty file)
+++ trunk/bzr-update.sh Tue Jun 24 20:08:33 2008
@@ -0,0 +1,3 @@
+#!/bin/sh
+echo $1
+bzr svn-import http://svn.gnome.org/svn/$1 /srv/bzr/$1
Added: trunk/git-create.sh
==============================================================================
--- (empty file)
+++ trunk/git-create.sh Tue Jun 24 20:08:33 2008
@@ -0,0 +1,21 @@
+#!/bin/sh
+echo $1
+
+# Make a directory for our mirror
+mkdir -p /srv/git/$1
+cd /srv/git/$1
+
+# We want naked mirrors
+GIT_DIR=. ; export GIT_DIR
+
+# Create a new repo and pull in the GNOME module
+git init
+git svn init --stdlayout --rewrite-root svn+ssh://svn.gnome.org/svn/$1 file:///srv/svn/$1
+git svn fetch
+
+# The packing isn't very agressive right now, so repack it like hell
+git gc --prune --aggressive
+git repack -adf --window=100
+
+# Point master at svn/trunk
+git symbolic-ref refs/heads/master refs/remotes/trunk
Added: trunk/git-update.sh
==============================================================================
--- (empty file)
+++ trunk/git-update.sh Tue Jun 24 20:08:33 2008
@@ -0,0 +1,43 @@
+#!/bin/sh
+
+echo $1
+cd /srv/git/$1
+
+#
+# Pull the latest from svn.gnome.org
+#
+git --bare svn fetch
+
+#
+# Update .git/refs/{heads|tags}/svn/* from refs/remotes/*
+#
+SET_ECHO="set -x" # enable echo
+SET_ECHO="set +x" # disable echo
+
+# update all branches and tags
+git for-each-ref "--format=%(refname)" refs/remotes |
+ sed 's,/\([^/]*\)$, \1,' | while read trunk ref ; do
+ case "$trunk" in
+ */tags) ($SET_ECHO ; git update-ref refs/tags/svn/$ref $trunk/$ref ) ;;
+ *) ($SET_ECHO ; git update-ref refs/heads/svn/$ref $trunk/$ref ) ;;
+ esac
+done
+
+# delete stale branches
+git for-each-ref "--format=%(refname)" refs/heads/svn |
+ sed 's,refs/heads/svn/,,' | while read ref ; do
+ git rev-parse "refs/remotes/$ref" >/dev/null 2>&1 ||
+ ($SET_ECHO ; git update-ref -d "refs/heads/svn/$ref" "refs/heads/svn/$ref" )
+done
+
+# delete stale tags
+git for-each-ref "--format=%(refname)" refs/tags/svn |
+ sed 's,refs/tags/svn/,,' | while read ref ; do
+ git rev-parse "refs/remotes/tags/$ref" >/dev/null 2>&1 ||
+ ($SET_ECHO ; git update-ref -d "refs/tags/svn/$ref" "refs/tags/svn/$ref" )
+done
+
+#
+# Allow dumb transports to work
+#
+exec git-update-server-info
Added: trunk/mirror.py
==============================================================================
--- (empty file)
+++ trunk/mirror.py Tue Jun 24 20:08:33 2008
@@ -0,0 +1,70 @@
+#!/usr/bin/env python
+
+import sys, os, fcntl, signal
+from rfc822 import Message
+
+class MailHandler(object):
+ def __init__(self):
+ self.maildir = "/home/x469yq/Maildir"
+ self.new_dir = os.path.join(self.maildir, "new")
+ self.cur_dir = os.path.join(self.maildir, "cur")
+
+ self.queue = []
+
+ self.probe()
+
+ def connect(self):
+ fd = os.open(self.new_dir, os.O_RDONLY)
+ fcntl.fcntl(fd, fcntl.F_NOTIFY,fcntl.DN_CREATE)
+ signal.signal(signal.SIGIO, self.on_event)
+
+ def on_event(self, signum, frame):
+ self.probe()
+ self.connect()
+
+ def probe(self):
+ for f in os.listdir(self.new_dir):
+ path = os.path.join(self.new_dir, f)
+ new_path = os.path.join(self.cur_dir, f)
+ if os.path.isfile(path):
+ self.parse(path)
+ try:
+ os.rename(path, new_path)
+ except:
+ pass
+ self.empty_queue()
+
+ def parse(self, path):
+ f = open(path)
+ m = Message(f)
+ module = m.getheader("X-Topics")
+ if module:
+ if module not in self.queue:
+ self.queue.append(module)
+
+ def empty_queue(self):
+ for module in self.queue:
+ for vcs in ("svn", "bzr", "git"):
+ self.update(vcs, module)
+ self.queue = []
+
+ def update(self, vcs, module):
+ moddir = os.path.join("/srv", vcs, module)
+ if os.path.isdir(moddir):
+ self.run("%s-update.sh" % vcs, module)
+ else:
+ self.run("%s-create.sh" % vcs, module)
+
+ def run(self, command, module):
+ os.system("%s %s" % (os.path.join(os.path.expanduser("~"), command), module))
+
+if __name__ == "__main__":
+ x = MailHandler()
+ if "--once" not in sys.argv:
+ x.connect()
+ while True:
+ try:
+ signal.pause() # sleep until signal received
+ except KeyboardInterrupt:
+ sys.exit(0)
+
Added: trunk/svn-create.sh
==============================================================================
--- (empty file)
+++ trunk/svn-create.sh Tue Jun 24 20:08:33 2008
@@ -0,0 +1,27 @@
+#!/bin/sh
+MODULE=$1
+UUID=$(svn info http://svn.gnome.org/svn/$MODULE | grep 'Repository UUID: ' | sed 's/Repository UUID\: //')
+
+echo $MODULE $UUID
+
+cd /srv/svn
+
+# Create a new repository
+svnadmin create $MODULE
+
+# Force UUID to match old repository
+cat - <<EOF | svnadmin load --force-uuid $MODULE
+SVN-fs-dump-format-version: 2
+
+UUID: $UUID
+EOF
+
+# svnsync hooks
+rm -rf $MODULE/hooks
+mkdir $MODULE/hooks
+echo '#!/bin/sh' > $MODULE/hooks/pre-revprop-change
+chmod +x $MODULE/hooks/pre-revprop-change
+
+# Set up svnsync
+svnsync init file:///srv/svn/$MODULE http://svn.gnome.org/svn/$MODULE
+svnsync sync file:///srv/svn/$MODULE
Added: trunk/svn-update.sh
==============================================================================
--- (empty file)
+++ trunk/svn-update.sh Tue Jun 24 20:08:33 2008
@@ -0,0 +1,3 @@
+#!/bin/sh
+echo $1
+svnsync --non-interactive sync file:///srv/svn/$1
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]