Convertire un repository Svn in Git: Difference between revisions

From RVM Wiki
Jump to navigation Jump to search
mNo edit summary
Line 72: Line 72:
==Con git-svn-migrate==
==Con git-svn-migrate==


Lo script è compatibile solo con git>=1.7 (NON va da lenny)
'''Lo script è compatibile solo con git>=1.7 (NON va da lenny)'''


* Scaricare lo script di conversione
  cd /tmp/
  cd /tmp/
* Fino a che i fix con /bin/bash non sono stati integrati, prelevare da
git clone https://github.com/mallman/git-svn-migrate.git
:e cambiare gli interpreti in /bin/bash
:poi si può usare il repository originale
  git clone https://github.com/JohnAlbin/git-svn-migrate
  git clone https://github.com/JohnAlbin/git-svn-migrate
  cd git-svn-migrate/
  cd git-svn-migrate/
  git archive --format=tar  --prefix=git-svn-migrate/ HEAD | gzip > ../git-svn-migrate.tar.gz
   
cd ..
* Fare l'ultimo commit sul repository svn
scp git-svn-migrate.tar.gz crosrv01.cross.priv:/tmp
 
Sulla macchina col repo:
 
cd /tmp
tar xvzf git-svn-migrate.tar.gz


cd git-svn-migrate
* Creare il file contenente l'elenco dei repository da convertire


  vi repositories-list.txt
  vi repositories-list.txt
Line 92: Line 94:
  file:///files/svn/repositories/etc
  file:///files/svn/repositories/etc


  ./fetch-svn-authors.sh --url-file=repository-list.txt > author-transform.txt
* Creare il file con gli autori:
  sudo ./fetch-svn-authors.sh --url-file=repositories-list.txt > author-transform.txt


  vi author-transform.txt
  vi author-transform.txt


  root = root <root@crosrv01.cross.priv>
  root = Root Crosrv01 <root@crosrv01.cross.priv>


  sudo ./git-svn-migrate.sh --url-file=repository-list.txt --authors-file=author-transform.txt /tmp/git-converted
  sudo ./git-svn-migrate.sh --url-file=repositories-list.txt --authors-file=author-transform.txt /tmp/git-converted


===Riferimenti===
===Riferimenti===
*[https://github.com/JohnAlbin/git-svn-migrate git-svn-migrate]
*[https://github.com/JohnAlbin/git-svn-migrate git-svn-migrate]

Revision as of 11:15, 24 August 2011

Manualmente

  • Installare il convertitore git-svn
sudo apt-get install git-core git-svn
  • Creare il repo git vuoto
sudo mkdir -p /files/git/repos/etc
cd /files/git/repos/etc
  • Inizializzarlo e preparalo per ricevere quello svn
sudo git init --bare
sudo git symbolic-ref HEAD refs/heads/trunk
  • Fare il checkout del repository svn per estrarre gli autori
cd /tmp/
mkdir svn
cd svn
sudo svn co file:///files/svn/repositories/etc .
  • Estrarre gli autori
svn log -q | awk -F '|' '/^r/ {sub("^ ", "", $2); sub(" $", "", $2); print $2" = "$2" <"$2">"}' | sort -u > authors-transform.txt
  • Editare nomi ed email
vi authors-transform.txt
  • Convertire il repository
sudo mkdir /tmp/git
cd /tmp/git
sudo git svn clone file:///files/svn/repositories/etc --no-metadata -A ../svn/authors-transform.txt --stdlayout .
  • Convertire gli ignore
sudo git svn show-ignore -i trunk | sudo tee  .gitignore
sudo git add .gitignore
sudo git commit -m 'Convert svn:ignore properties to .gitignore.'
  • Linkare il repository locale a quello remoto:
sudo git remote add etc /files/git/repos/etc
  • Tweak per i percorsi svn
sudo git config remote.etc.push 'refs/remotes/*:refs/heads/*'
  • Fare il push
sudo git push etc
  • Convertire il trunk nel repository centrale
cd /files/git/repos/etc
sudo git branch -m trunk master
  • Creare lo script per convertire i branches
sudoedit convert-tags-branches
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
sudo chmod +x convert-tags-branches
  • Convertire il branch
sudo ./convert-tags-branches

Riferimenti

Con git-svn-migrate

Lo script è compatibile solo con git>=1.7 (NON va da lenny)

  • Scaricare lo script di conversione
cd /tmp/
  • Fino a che i fix con /bin/bash non sono stati integrati, prelevare da
git clone https://github.com/mallman/git-svn-migrate.git
e cambiare gli interpreti in /bin/bash
poi si può usare il repository originale
git clone https://github.com/JohnAlbin/git-svn-migrate
cd git-svn-migrate/

  • Fare l'ultimo commit sul repository svn
  • Creare il file contenente l'elenco dei repository da convertire
vi repositories-list.txt
file:///files/svn/repositories/etc
  • Creare il file con gli autori:
sudo ./fetch-svn-authors.sh --url-file=repositories-list.txt > author-transform.txt
vi author-transform.txt
root = Root Crosrv01 <root@crosrv01.cross.priv>
sudo ./git-svn-migrate.sh --url-file=repositories-list.txt --authors-file=author-transform.txt /tmp/git-converted

Riferimenti