Jaki byłby najlepszy sposób skonfigurowania lustra git tylko do odczytu istniejącego repozytorium svn i skonfigurowanie haków po zatwierdzeniu tak, że ilekroć ktoś zobowiąże się do svn, git lustro jest automatycznie aktualizowane? Przede wszystkim chciałbym uruchomić klon git-svn tylko raz, na serwerze, a następnie pozwolić, żeby ludzie po prostu wypisali się z git bez konieczności git-svn sklonowania całego repozytorium svn.tylko do odczytu lustro git z repozytorium svn
Odpowiedz
Robię to na projekcie, który używa SVN (przesyłając do publicznego repozytorium na githubie). Nie mam svn commit, ale to na zadanie 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"
Jeśli wywoła to z SVN commit zamiast crona powinno działać.
Oczywiście musisz skonfigurować pilota o nazwie github
, używając git remote add github [...]
. Repozytorium git, którego używam, jest repozytorium "gołym" (patrz git init --bare
).
Najlepszym sposobem na skonfigurowanie lustra Svn/Git (zapisywalnego) byłoby użycie SubGit - jest to narzędzie opracowane specjalnie do tego zadania. Zastrzeżenie: jestem twórcą tego narzędzia.
piękne, dzięki –
Poza SubGit 2.0 nie potrzebuje lokalny dostęp do repozytorium i może zbudować zapisu Git lustro zdalnego repozytorium zbyt (patrz http: // subgit.com/eap). –
@AlexanderKitaev Należy pamiętać, że należy ujawnić powiązanie podczas łączenia z produktem lub inną witryną. Widzę z [tego posta] (http://stackoverflow.com/a/13288270/2057919), że stworzyłeś SubGit. Zmieniłem tę odpowiedź, aby to odzwierciedlić. W przyszłości pamiętaj o podaniu połączenia, jeśli masz link do SubGit. –
dzięki, za pomocą GitHub wydaje droga –