Ho cercato domande correlate ma non ho trovato nulla che corrisponda alla mia situazione specifica: ho alcuni vecchi archivi di repository da un server SVN che è stato rimosso anni fa. Sono tarball della struttura del repository originale sul server. Quello che voglio fare è convertirli in repository git come base per il lavoro futuro/rilanciare i progetti. Ho già letto diversi tutorial sul processo di conversione e penso di poter capire la conversione degli autori, la mappatura dei rami, ecc., Ma tutti presuppongono che tu abbia un server SVN e un URL per il repository. Devo installare e configurare il server SVN per fare questa conversione, o posso in qualche modo indicare git clone
o svn2git
(o un altro strumento) sul dump repo che ho?Conversione di un dump svn repo locale su git
risposta
installare la sovversione a livello locale al fine di importare il dum p, quindi con il pacchetto git-svn.
È possibile utilizzare git svn clone file:///path/to/svn/repo /path/to/empty/dir
Ho già trovato questo esperimento la notte scorsa e l'ho fatto funzionare, b ut questa è la risposta corretta. Grazie e + 1/accettato! E benvenuto in SO. :-) –
grazie mille! – Asenar
- Tutti svn (?) -> convertitori git repository Subversion richiedono vivo,
- Tree-copia di repository non è una discarica, è al solito il backup a livello di file.
si dispone di:
- installare e configurare un server Subversion (se il convertitore non è in grado di gestire
file:///
protocollo per SVN, altrimenti non è necessaria - basta decomprimere tarball (s) e verificare pronti contro termine con svn client) - leggere su git-svn
- Usa git-svn
recuperare un elenco di tutti i committer Subversion:
svn log -q | awk -F '|' '/^r/ {sub("^ ", "", $2); sub(" $", "", $2); print $2" = "$2" <"$2">"}' | sort -u > authors-transform.txt
clonare il repository Subversion usando git-svn:
git svn clone [SVN repo URL] --no-metadata -A authors-transform.txt --stdlayout ~/temp
Converti svn: ignore oggetti da .gitignore:
cd ~/temp
git svn show-ignore > .gitignore
git add .gitignore
git commit -m 'Convert svn:ignore properties to .gitignore.'
repository push a un repository git nuda:
git init --bare ~/new-bare.git
cd ~/new-bare.git
git symbolic-ref HEAD refs/heads/trunk
Poi spingere il repository temporaneo al nuovo repository nudo.
cd ~/temp
git remote add bare ~/new-bare.git
git config remote.bare.push 'refs/remotes/*:refs/heads/*'
git push bare
Rinomina “tronco” ramo “master”:
cd ~/new-bare.git
git branch -m trunk master
Clean up rami e tag:
cd ~/new-bare.git
git for-each-ref --format='%(refname)' refs/heads/tags |
cut -d/-f 4 |
while read ref
do
git tag "$ref" "refs/heads/tags/$ref";
git branch -D "tags/$ref";
done
Riferimento: http://john.albin.net/git/convert-subversion-to-git
Prendere il file dump nelle recide:
svnadmin dump "repopath or url" > import.bkp git svn clone "back"
Vai al percorso clone e quindi aprire bash Git e eseguire questi comandi:
git svn show-ignore > .gitignore git add .gitignore git commit -m "with message" git check in "git url"
edizione standard di VisualSVN Server è gratis, quindi c'è il piano B. – Dialecticus
Penso che l'installazione del server SVN originale sarebbe un po 'più facile di così .. –