2013-04-14 25 views
19

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

+1

edizione standard di VisualSVN Server è gratis, quindi c'è il piano B. – Dialecticus

+0

Penso che l'installazione del server SVN originale sarebbe un po 'più facile di così .. –

risposta

21

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

+1

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. :-) –

+0

grazie mille! – Asenar

2
  1. Tutti svn (?) -> convertitori git repository Subversion richiedono vivo,
  2. Tree-copia di repository non è una discarica, è al solito il backup a livello di file.

si dispone di:

  1. 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)
  2. leggere su git-svn
  3. Usa git-svn
4

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

0
  1. Prendere il file dump nelle recide:

    svnadmin dump "repopath or url" > import.bkp 
    
    git svn clone "back" 
    
  2. 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"