Migrare la GitHub

De la dexonline wiki
Sari la navigare Sari la căutare

Migrare la GitHub

În februarie 2014 am migrat de la Subversion la git și GitHub. Aici documentez procesul.

Migrarea de la svn la git, într-un repository local

Vezi https://help.github.com/articles/importing-from-subversion și https://github.com/nirvdrum/svn2git#readme

sudo apt-get install git-core git-svn ruby rubygems
sudo gem install svn2git

Am extras toți autorii care au contribuit vreodată:

svn log --quiet http://voronet.francu.com/repos/DEX | grep -E "r[0-9]+ \| .+ \|" | cut -d'|' -f2 | sed 's/^ //' | sort | uniq

Am creat un fișier cu numele și adresele de e-mail (înțeleg că acesta este formatul Git pentru autori).

alex.grigoras = Alex Grigoraș <alex.grigoras@gmail.com>
alexm = Alex Morega <alex@grep.ro>
alinu = Alin Ungureanu <alyn.cti@gmail.com>
cata = Cătălin Frâncu <cata@francu.com>
cristian.chilipirea = Cristian Chilipirea <cristian.chilipirea@cti.pub.ro>
grigoroiualex = Aleg Grigoroiu <grigoroiualexandru@gmail.com>
guitarMan = Horia <mihaitrifu512@yahoo.com>
mihai17 = Mihai Trifu <mihaitrifu512@yahoo.com>
radu = Radu Borza <raduborza@gmail.com>
root = Cătălin Frâncu <cata@francu.com>
sonia = Sonia Andriu <sonia@andriu.ro>
svn = Cătălin Frâncu <cata@francu.com>
vially = Valentin Hăloiu <vially.ichb@gmail.com>

Am ales versiunea 4 pentru svn2git: The svn repo is NOT in standard layout and has no trunk, branches, or tags at the root level of the repo. Instead the root level of the repo is equivalent to the trunk and there are no tags or branches.

svn2git http://voronet.francu.com/repos/DEX --authors authors.txt --rootistrunk --verbose

Încărcarea acestui repository la GitHub

git remote add origin git@github.com:CatalinFrancu/dexonline.git
git push origin master

Migrarea tichetelor trac la issues pe GitHub

Am experimentat un pic cu trac2github, dar nu merge bine. Pierde diacriticele și dă niște erori. Pare că apelează API-ul GitHub în mod greșit.

Folosim tratihubis. Am exportat tichetele și comentariile în două fișiere csv:

sqlite3 -header -csv /path/to/trac.db < tratihubis-master/query_comments > comments.csv
sqlite3 -header -csv /path/to/trac.db < tratihubis-master/query_tickets.sql > tickets.csv

Am creat fișierul tratihubis.conf care mapează cât de mult se poate din utilizatorii Trac la utilizatori GitHub:

[tratihubis]
user = CatalinFrancu
password = ...
repo = dexonline
tickets = /path/to/tickets.csv
comments = /path/to/comments.csv
users = radu: RaduBorza, radu_borza@yahoo.it: RaduBorza, alex grigoras: alex-grigoras, cristian chilipirea: darkhunterj, grep.ro/openid: mgax, mihaitrifu512: MihaiTrifu, sonia andriu: sandriu, strat.cristian@gmail.com: cgst, sîrbu nicolae-cezar: sarbull, vially: vially, constantin serban-radoi: costash, *: CatalinFrancu

Am testat (dry-run):

python tratihubis.py tratihubis.conf

Am modificat pe alocuri tratihubis.py, căci issue-urile pe GitHub nu conțineau numele corecte.

  • am apelat repo.create_issue(title, body, 'CatalinFrancu') cu numele meu hard-coded ca să previn niște erori de API. Presupun că nu poți crea un bug prin API și să-l asignezi altcuiva
  • am adăugat un % tracUser lipsă: raise _ConfigError(_OPTION_USERS, u'Trac user "%s" must be mapped to a Github user' % tracUser)

Am rulat „pe bune”:

python tratihubis.py --really tratihubis.con

Lucruri de făcut

Convertește beta.dexonline.ro

Convertește m.dexonline.ro

Convertește dexonline.ro


Pune o legătură de la GitHub la instrucțiunile de instalare.

Anunță toate părțile interesate de schimbare.

Găzduiește undeva fișierele atașate și de pus link-uri pe GitHub. GitHub permite doar încărcarea imaginilor.

sqlite3 /path/to/trac.db
select distinct id from attachment where type = 'ticket' order by id;

Etichetează bugurile: newbie, graphic etc.

Pagini cu probleme la migrare: http://trac.dexonline.ro/wiki/Desp%C4%83r%C8%9Birea_%C3%AEn_silabe este sau nu aceeași cu Despărțirea în silabe?

Link din Informații pentru programatori către lista de tichete newbie (după reetichetarea tichetelor)

Schimbă legătura către Update4Instructions (protocolul de sincronizare cu clienții)