Domanda

Quale sarebbe il modo migliore per impostare una sola lettura git specchio di un repository SVN già esistente, e impostare post-commit ganci in modo tale che ogni volta che qualcuno si impegna a SVN, git lo specchio viene aggiornato automaticamente? Soprattutto, mi piacerebbe correre clone git-svn solo una volta, sul server, e poi lasciare che la gente basta controllare da git senza dover clone git-svn l'intero repository svn stessi.

È stato utile?

Soluzione

Lo faccio su un progetto che utilizza SVN (spingendo a un repository su GitHub pubblico). Non ho uno SVN commit hook, ma questo su un processo di cron:

#!/bin/bash

repo=/path/to/my-mirror.git
lockfile="$repo/cron-lock"

if ! lockfile -r1 "$lockfile";then
        exit 1
fi

export GIT_DIR=$repo
# update refs/remotes/git-svn:
git svn fetch -q
# make 'master' match the git-svn branch:
git fetch "$repo" refs/remotes/git-svn:refs/heads/master
# publish to github
git push github master

rm -f "$lockfile"

Se si attiva questo da uno SVN commit hook al posto di un lavoro cron, dovrebbe funzionare.

Naturalmente, è necessario impostare una chiamata remota github utilizzando git remote add github [...]. Il repository git che sto usando è un repository "nuda" (vedi git init --bare).

Altri suggerimenti

Il modo migliore per impostare un mirror SVN / Git (scrivibile) potrebbe essere quella di utilizzare SubGit - questo è un strumento appositamente sviluppato per questo compito. Diniego:. Io sono l'autore di questo strumento

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top