Kako prenijeti SVN spremište s poviješću u novo spremište Git?

Pročitao sam Git tutorial, FAQ, Git - tečaj SVS, i svi oni to objašnjavaju i to, ali nigdje ne možete pronaći jednostavnu instrukciju kao što je:

SVN spremište u: svn://myserver/path/to/svn/repos

Spremite spremište u: git://myserver/path/to/git/repos

 git-do-the-magic-svn-import-with-history \ svn://myserver/path/to/svn/repos \ git://myserver/path/to/git/repos 

Ne očekujem da će biti tako jednostavno i ne očekujem da bude jedan tim. Ali očekujem da neće pokušati objasniti ništa, samo ću reći koje korake poduzeti u ovom primjeru.

1312
17 сент. postavio Milan Babuškov 17 ruj . 2008-09-17 05:04 '08 u 5:04 am 2008-09-17 05:04
@ 30 odgovora

Magic:

 $ git svn clone http://svn/repo/here/trunk 

Git i SVN rade drugačije. Morate naučiti Git, a ako želite pratiti promjene iz SVN-a, morate naučiti git-svn . Na stranici s priručnikom git-svn postoji dobar primjer:

 $ git svn --help 
465
17 сент. odgovor je dan jfm3 17 sep . 2008-09-17 05:08 '08 u 5:08 am 2008-09-17 05:08

Stvorite korisničku datoteku (tj. users.txt ) za mapiranje SVN korisnika na Git:

 user1 = First Last Name <email@address.com> user2 = First Last Name <email@address.com> ... 

Ovaj font možete koristiti za stvaranje predloška iz postojećeg SVN spremišta:

 svn log --xml | grep "<author>" | sort -u | perl -pe 's/.*>(.*?)<.*/$1 = /' | tee users.txt 

SVN će se zaustaviti ako pronađe nestalog SVN korisnika u datoteci. Ali nakon toga možete ažurirati datoteku i pokupiti gdje ste stali.

Sada uklonite SVN podatke iz spremišta:

 git svn clone --stdlayout --no-metadata --authors-file=users.txt svn://hostname/path dest_dir-tmp 

Ova naredba će stvoriti novi Git repozitorij na dest_dir-tmp i početi izvlačiti SVN spremište. Napominjemo da zastavica "--stdlayout" znači da imate uobičajene SVN / layout, grane /, / SVN oznake. Ako je vaš raspored drugačiji, pogledajte opcije - --tags , - --branches , - --trunk (općenito, git svn help ).

Dopušteni su svi uobičajeni protokoli: svn:// , http:// , https:// . URL bi trebao biti usmjeren na bazno spremište, na primjer http://svn.mycompany.com/myrepo/repository . Ovo ne bi smjelo uključivati /trunk , /tag ili /branches .

Napomena: nakon izvršavanja ove naredbe, vrlo često izgleda da operacija "zamrzava / zamrzava", i sasvim je normalno da se može zaglaviti dugo vremena nakon inicijalizacije novog spremišta. Na kraju ćete vidjeti poruke dnevnika koje ukazuju na to da se migriraju.

Također imajte na umu da ako izostavite oznaku --no-metadata , Git će dodati poruku o odgovarajućoj SVN verziji poruci git-svn-id: svn://svn.mycompany.com/myrepo/<branchname/trunk>@<RevisionNumber> <Repository UUID> (tj. git-svn-id: svn://svn.mycompany.com/myrepo/<branchname/trunk>@<RevisionNumber> <Repository UUID> )

Ako korisničko ime nije pronađeno, ažurirajte datoteku users.txt , a zatim:

 cd dest_dir-tmp git svn fetch 

Možda ćete morati ponoviti ovu posljednju naredbu nekoliko puta ako imate veliki projekt, dok ne primite sve Subverzijske transakcije:

border=0
 git svn fetch 

Po završetku, Git će provjeriti SVN trunk na novu granu. Sve ostale grane konfigurirane su kao daljinski upravljač. Ostale ogranke SVN-a možete pogledati:

 git branch -r 

Ako želite spremiti druge udaljene grane u spremište, želite stvoriti lokalnu granu za svaku od njih ručno. (Preskoči trunk / master.) Ako to ne učinite, grane neće biti klonirane u zadnjem koraku.

 git checkout -b local_branch remote_branch # It OK if local_branch and remote_branch are the same name 

Oznake se uvoze kao podružnice. Morate stvoriti lokalnu granu, stvoriti oznaku i izbrisati granu kako biste ih imali kao oznake u Git-u. Učinite to s oznakom "v1":

 git checkout -b tag_v1 remotes/tags/v1 git checkout master git tag v1 tag_v1 git branch -D tag_v1 

Kopirajte spremište GIT -SVN u čisto Git spremište:

 git clone dest_dir-tmp dest_dir rm -rf dest_dir-tmp cd dest_dir 

Lokalne grane koje su ranije kreirane iz udaljenih grana kopirat će se samo kao udaljene grane u novo klonirano spremište. (Preskakanje glavnog / glavnog kanala.) Za svaku granu koju želite zadržati:

 git checkout -b local_branch origin/remote_branch 

Na kraju izbrišite izbrisani Git iz čistog repozitorija, što ukazuje na obrisano privremeno spremište:

 git remote rm origin 
1383
19 окт. Odgovor daje cmcginty 19. listopada. 2010-10-19 22:45 '10 u 22:45 sati 2010-10-19 22:45

Premjestite spremište subverzije u spremište Git . Prvo morate stvoriti datoteku koja odgovara imenima autora Subverzionih transakcija s članovima Git-a, recimo ~/authors.txt :

 jmaddox = Jon Maddox <jon@gmail.com> bigpappa = Brian Biggs <bigpappa@gmail.com> 

Zatim možete prenijeti podatke o Subverziji u spremište Git:

 mkdir repo  cd repo git svn init http://subversion/repo --no-metadata git config svn.authorsfile ~/authors.txt git svn fetch 

Ako ste na Macu, možete dobiti git-svn iz MacPorts-a instaliranjem git-core +svn .

Ako je vaše spremište subverzije na istom računalu kao željeno Git repozitorij, onda možete koristiti ovu sintaksu za init korak, inače to nije važno:

 git svn init file:///home/user/repoName --no-metadata 
172
17 сент. odgovor je dao Eugene Yokota 17 sep. 2008-09-17 05:10 '08 u 5:10 am 2008-09-17 05:10

Koristio sam svn2git skriptu i djeluje kao šarm! https://github.com/nirvdrum/svn2git

64
01 февр. Odgovor daje Thiago Leão Moreira 01. veljače. 2011-02-01 10:53 '11 u 10:53 2011-02-01 10:53

Predlažem da radite udobno s Git prije nego pokušate koristiti git -svn cijelo vrijeme, tj. spremite SVN kao središnji repo i koristite Git lokalno.

Međutim, za jednostavnu migraciju s cijelom pričom, evo nekoliko jednostavnih koraka:

Inicijalizirajte lokalni repo:

 mkdir project cd project git svn init http://svn.url 

Označite koliko daleko želite početi uvoziti verzije:

 git svn fetch -r42 

(ili samo "git svn fetch" za sve revolucije)

Zapravo pokupite sve od:

 git svn rebase 

Rezultat uvoza možete provjeriti pomoću Gitka. Nisam siguran da radi na sustavu Windows, radi na OSX-u i Linuxu:

 gitk 

Ako imate SVN spremište koje je lokalno klonirano, možete kliknuti na centralizirani Git repo kako biste pojednostavili suradnju.

Prvo stvorite prazan udaljeni repo (možda na GitHub ?):

 git remote add origin git@github.com:user/project-name.git 

Zatim, opcionalno, sinkronizirajte glavnu granu tako da operacija povlačenja automatski poveže udaljeni majstor s vašim lokalnim majstorom kada oba sadrže novi materijal:

 git config branch.master.remote origin git config branch.master.merge refs/heads/master 

Nakon toga možda ćete biti zainteresirani da isprobate svoj vlastiti alat za git_remote_branch koji vam pomaže u radu s udaljenim granama:

Prvo objašnjenje: Git udaljene grane

Daljnji rad za najnoviju verziju: " Git time, rad s git_remote_branch "

54
17 сент. odgovor je dan webmat 17 sep . 2008-09-17 21:20 '08 u 21:20 2008-09-17 21:20

Postoji novo rješenje za glatku migraciju iz Subverzije u Git (ili za istovremenu uporabu): SubGit ( http://subgit.com/ ).

Ja osobno radim na ovom projektu. Mi koristimo SubGit u našim spremištima - neki od mojih suigrača koriste Git i neki Subversion, i do sada radi vrlo dobro.

Da biste se prebacili s Subverzije na Git pomoću SubGit-a, morate pokrenuti:

 $ subgit install svn_repos ... TRANSLATION SUCCESSFUL 

Nakon toga, dobit ćete Git repozitorij u svn_repos / .git i možete ga klonirati ili samo nastaviti koristiti Subversion i ovaj novi Git repozitorij zajedno: SubGit će se pobrinuti da su oba sinkronizirana.

Ako vaše Subverzijsko spremište sadrži nekoliko projekata, tada će se u svn_repos / git direktoriju stvoriti nekoliko Git repozitorija. Da biste postavili emitiranje prije pokretanja, učinite sljedeće:

 $ subgit configure svn_repos $ edit svn_repos/conf/subgit.conf (change mapping, add authors mapping, etc) $ subgit install svn_repos 

Pomoću SubGita možete se prebaciti na čisti Git (ne git -svn) i početi ga koristiti dok držite Subverziju onoliko koliko vam je potrebna (na primjer, za već konfigurirane alate za izgradnju).

Nadam se da ovo pomaže!

26
24 нояб. Odgovor Alexander Kitaev 24. studenog. 2011-11-24 23:12 '11 u 23:12 2011-11-24 23:12

Pogledajte službenu stranicu git -svn . Posebno pogledajte odjeljak "Osnovni primjeri":

Praćenje i doprinos cijelom projektu kojim upravlja Subversion (zajedno s deblom, oznakama i granama):

 # Clone a repo (like git clone): git svn clone http://svn.foo.org/project -T trunk -b branches -t tags 
15
17 сент. Odgovor daje EfForEffort na 17. rujna . 2008-09-17 20:09 '08 u 20:09 2008-09-17 20:09
13
12 февр. Odgovor je dat kdahlhaus 12. veljače. 2011-02-12 00:17 '11 u 0:17 2011-02-12 00:17

SubGit (protiv plavog zaslona smrti)

 subgit import --svn-url url://svn.serv/Bla/Bla directory/path/Local.git.Repo 

Sve.

+ Za ažuriranje iz SVN-a, Git spremište kreirano prvom naredbom.

 subgit import directory/path/Local.git.Repo 

Koristio sam način da se odmah prebacim na git za ogromno spremište.
Naravno, trebate obuku.
Ali nikada ne možete zaustaviti razvojni proces.

Ovo je moj način.

Moje rješenje izgleda ovako:

  • Migrirajte SVN u spremište Git
  • Ažurirajte svoje git spremište prije premještanja naredbe na .

Migracija traje mnogo vremena za veliko SVN spremište.
No ažuriranje dovršene migracije traje samo nekoliko sekundi.

Naravno, koristim SubGit , mama. git -svn me čini plavim zaslonom smrti . Samo stalno. I git -svn mi je dosadilo s git " predugačkim imenom datoteke " fatalnom pogreškom.

KORACI

1. Preuzmite SubGit

2. Pripremite naredbe za prijenos i ažuriranje.

Recimo da to radimo za Windows (ovo je trivijalno za Linux port).
U SubGit bin direktoriju (subgit-2.XX bin), stvorite dvije .bat datoteke.

Sadržaj datoteke / naredbe za prijenos:

 start subgit import --svn-url url://svn.serv/Bla/Bla directory/path/Local.git.Repo 

Naredba "start" nije obavezna (Windows). To će vam omogućiti da vidite greške pri pokretanju i ostavite ljusku otvorenu nakon dovršetka SubGita.

Ovdje možete dodati dodatne parametre, slično git -svn . Koristim samo - myCompanyDomain.com za zadanu domenu da popravim domenu adrese e-pošte autora SVN-a.
Imam standardnu ​​strukturu SVN spremišta (trunk / grane / oznake) i nismo imali problema s "mapiranjem". Zato više ništa ne činim.

(Ako želite prenijeti oznake, na primjer, grane, ili vaš SVN da ima nekoliko mapa grana / oznaka, možete koristiti detaljniji pristup Subgita)

Savjet 1 . Upotrijebite --minimal-revizija YourSvnRevNumber da biste brzo vidjeli kako se stvari odvijaju (neka vrsta otklanjanja pogrešaka). Posebno je korisno vidjeti autorizirana imena autora ili e-poštu.
Ili ograničite dubinu povijesti migracije.

Savjet 2 . Migracija se može prekinuti ( Ctrl + C ) i obnoviti pokretanjem sljedeće datoteke naredbe / ažuriranja.
Ne savjetujem da to radite za velika spremišta. Dobio sam "Iscrpni Java + Windows Iznimka".

Savjet 3 . Bolje je napraviti kopiju spremišta bez rezultata.

Sadržaj datoteke / naredbe za ažuriranje:

 start subgit import directory/path/Local.git.Repo 

Možete ga pokrenuti neograničeni broj puta kada želite da zadnja naredba urezuje vaše git repozitorij.

Upozorenje! Nemojte dodirivati ​​golo spremište (na primjer, kreiranje grana).
Dobit ćete sljedeću fatalnu pogrešku:

Nepopravljiva pogreška: nije sinkronizirana i ne može se sinkronizirati ... Prijevod verzije Subverzije u Gitu čini ...

3. Pokrenite prvu naredbu / datoteku. Za veće vrijeme skladištenja je potrebno. 30 sati za moju skromnu pohranu.

Sve.
Možete ažurirati Git repozitorij iz SVN-a u bilo koje vrijeme, koliko puta pokretanjem druge datoteke / naredbe. I prije nego što prebacite svoj razvojni tim na git.
Potrebno je nekoliko sekundi.



Postoji još jedan koristan zadatak.

Kliknite lokalno spremište Git na udaljeno spremište Git

Je li ovo vaš slučaj? Nastavljamo.

  • Prilagodite svoje konzole

trčanje:

 $ git remote add origin url://your/repo.git 
  1. Pripremite se za slanje svog velikog lokalnog Git repozitorija u udaljeno spremište.

Prema zadanim postavkama, vaš git ne može slati velike dijelove. fatalan: daljinski kraj neočekivano je spustio slušalicu

Pokreni za ovo:

 git config --global http.postBuffer 1073741824 

524288000 - 500 MB 1073741824 - 1 GB, itd.

Popravite probleme s lokalnim certifikatima . Ako vaš git poslužitelj koristi slomljenu potvrdu.

Isključio sam certifikate .

Osim toga, vaš Git poslužitelj može imati ograničenja na broj zahtjeva koje treba popraviti .

  1. Kliknite sve migracije u udaljeno spremište Git.

Pokreni s lokalnim git-om:

 git push origin --mirror 

(porijeklo git push "*: *" za starije verzije git-a)

Ako dobijete sljedeće: error: Git se ne može pojaviti: ne postoji takva datoteka ili direktorij ... Za mene potpuni oporavak memorije rješava ovu pogrešku (30 sati). Možete isprobati sljedeće naredbe

 git push origin --all git push origin --tags 

Ili pokušajte ponovno instalirati Git ( beskorisno za mene ). Ili možete stvoriti grane iz svih vaših oznaka i kliknuti na njih. Ili, ili, ili ...

12
06 февр. odgovor je dan 3. veljače. 2015-02-06 14:12 '15 u 14:12 2015-02-06 14:12

reposurgeon

Za složene slučajeve, spremište Eric S. Raymond je izbor. Osim SVN-a, podržava i mnoge druge sustave kontrole verzija putem fast-export , kao i CVS-a . Autor izvješćuje o uspješnim konverzijama u drevna spremišta kao što su Emacs i FreeBSD .

Čini se da alat cilja na gotovo savršenu pretvorbu (na primjer, pretvaranje SVN svn:ignore svojstava u .gitignore datoteke) čak i za složene repozitorije s dugom poviješću. U mnogim slučajevima, drugi alati mogu biti lakši za korištenje.

Prije nego što reposurgeon naredbenog retka, svakako pročitajte odličan DVCS vodič za migraciju , koji će vas provesti kroz proces pretvorbe korak po korak.

7
20 марта '15 в 21:20 2015-03-20 21:20 odgovor je dat krlmlr 20. ožujka '15 u 21:20 2015-03-20 21:20

Ovaj atlasijski priručnik jedan je od najboljih koje sam pronašao:

https://www.atlassian.com/git/migration

Ovaj alat - https://bitbucket.org/atlassian/svn-migration-scripts - također je vrlo koristan za stvaranje vašeg author.txt između ostalog.

7
13 марта '14 в 16:58 2014-03-13 16:58 odgovor je dao Andrew B 13. ožujka 2014. u 16:58 2014-03-13 16:58

Višestruki prošireni odgovor koji koristi samo git, svn i bash. To uključuje korake za SVN spremišta koja ne koriste uobičajeni izgled s rasporedom trunk / branches / tags (SVN apsolutno ništa ne daje takav izgled).

Prvo upotrijebite ovu skriptu bash da skenirate SVN repo za različite osobe koje su pridonijele izradi predloška za datoteku mapiranja:

 #!/usr/bin/env bash authors=$(svn log -q | grep -e '^r' | awk 'BEGIN { FS = "|" } ; { print $2 }' | sort | uniq) for author in ${authors}; do echo "${author} = NAME <USER@DOMAIN>"; done 

Koristite ovo za stvaranje datoteke authors u koju povezujete svn korisnička imena s korisničkim user.name i user.email e-pošte koje su postavili vaši razvojni programeri, koristeći git config svojstva user.name i user.email (napominjemo da za uslugu poput GitHub dostupnost odgovarajućeg pisma).

Zatim git svn svn spremište u git repozitorij, govoreći mu o podudaranju:

git svn clone --authors-file=authors --stdlayout svn://example.org/Folder/projectroot

To može potrajati jako dugo, jer će git svn pojedinačno provjeriti svaku reviziju za svaku postojeću oznaku ili granu. (imajte na umu da su oznake u SVN-u doista grane, tako da završavaju kao takve u Gitu). Možete je ubrzati uklanjanjem starih oznaka i grana u SVN-u koje vam nisu potrebne.

Ako to učinite na poslužitelju na istoj mreži ili na istom poslužitelju, možete ga ubrzati. Osim toga, ako je iz bilo kojeg razloga ovaj proces prekinut, možete ga nastaviti koristiti

git svn rebase --continue

U mnogim slučajevima vi ste ovdje. Ali ako vaš SVN repo ima nekonvencionalan raspored, gdje imate samo direktorij u SVN-u koji želite staviti u git granu, možete poduzeti nekoliko dodatnih koraka.

Najjednostavnije je jednostavno stvoriti novi repo na SVN-u na vašem poslužitelju koji je u skladu s ugovorom, i koristiti svn copy za postavljanje direktorija u okosnicu ili granu. Ovo je možda jedini način da vaš direktorij bude u potpunosti u korijenu repoa, kad sam ga zadnji put pokušao, git svn jednostavno odbio provjeriti.

To možete učiniti i pomoću git-a. Za git svn clone koristite direktorij koji želite staviti u git grane.

Nakon lansiranja

 git branch --set-upstream master git-svn git svn rebase 

Napominjemo da to zahtijeva git 1.7 ili noviji.

6
25 сент. Odgovor je dat thoutbeckers 25. rujna 2013-09-25 12:23 '13 u 12:23 pm 2013-09-25 12:23

Morate instalirati

 git git-svn 

Kopirano s ove veze http://john.albin.net/git/convert-subversion-to-git .

1. Nabavite popis svih Subversion subvencija

Subverzija jednostavno navodi korisničko ime za svaku obvezu. Git s obrađuje mnogo bogatije podatke, ali za najjednostavniju autoricu za fiksaciju morate navesti ime i adresu e-pošte. Alat git -svn po zadanom će jednostavno navesti SVN korisničko ime u poljima autora i e-pošte. No, uz malu količinu posla, možete stvoriti popis svih SVN korisnika i što se podudara s njihovim imenom i Git adresama. Ovaj popis može koristiti git -svn za pretvaranje jednostavnih svn imena u odgovarajuće Git-ove počinitelje.

Iz korijena lokalnog Subversion testa pokrenite sljedeću naredbu:

 svn log -q | awk -F '|' '/^r/ {sub("^ ", "", $2); sub(" $", "", $2); print $2" = "$2" <"$2">"}' | sort -u > authors-transform.txt 

Time će se uhvatiti sve poruke dnevnika, ugrabiti korisnička imena, eliminirati duplicirana korisnička imena, sortirati korisnička imena i staviti ih u datoteku "authors-transform.txt". Sada uredite svaki redak datoteke. Na primjer, pretvorite:

 jwilkins = jwilkins <jwilkins> 

u ovo:

 jwilkins = John Albin Wilkins <johnalbin@example.com> 

2. Klonirajte Subversion spremište s git -svn

 git svn clone [SVN repo URL] --no-metadata -A authors-transform.txt --stdlayout ~/temp 

To će biti standardna git -svn transformacija (koristeći datoteku autora-transform.txt stvorenu u koraku 1) i smjestiti Git spremište u mapu "~ / temp" unutar vašeg kućnog direktorija.

3. Pretvorite svojstva svn: ignore prije .gitignore

Ako je vaš svn repo koristio svn: ignore svojstva, možete ga jednostavno pretvoriti u .gitignore datoteku pomoću:

 cd ~/temp git svn show-ignore > .gitignore git add .gitignore git commit -m 'Convert svn:ignore properties to .gitignore.' 

4. Gurnite spremište u Git golo spremište

Prvo stvorite golo spremište i napravite njegov zadani odgovor svns "trunk".

 git init --bare ~/new-bare.git cd ~/new-bare.git git symbolic-ref HEAD refs/heads/trunk 

Zatim premjestite spremište privremenog spremnika u novo otvoreno spremište.

 cd ~/temp git remote add bare ~/new-bare.git git config remote.bare.push 'refs/remotes/*:refs/heads/*' git push bare 

Sada možete sigurno izbrisati ~ / temp spremište.

5. Promijenite naziv ogranka "trunk" u "master"

Glavna grana razvoja nazivaće se "trunk", što odgovara imenu u Subverziji. Želite li ga preimenovati u standardnu ​​granu Git-a pomoću:

 cd ~/new-bare.git git branch -m trunk master 

6. Čišćenje grana i oznaka

git -svn čini sve oznake Subversions u vrlo kratkim Git granama u obliku "tags / name". Želite pretvoriti sve ove grane u stvarne Git oznake pomoću:

 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 

Ovaj korak će uzeti malo unosa. :-) Ali, ne brinite; vaša unix ljuska će pružiti sekundarni upit za ekstra dugu naredbu koja počinje s git za-svaki-ref.

6
22 июля '14 в 7:36 2014-07-22 07:36 odgovor je dao Valarpirai 22. srpnja 14. siječnja u 7:36 2014-07-22 07:36

Sada GitHub ima funkciju uvoza iz SVN spremišta . Nikad to nisam pokušao.

5
21 сент. odgovor je dan webmat 21 sep . 2008-09-21 05:15 '08 u 5:15 am 2008-09-21 05:15

Možemo koristiti naredbe git svn clone kao što je prikazano u nastavku.

  • svn log -q <SVN_URL> | awk -F '|' '/^r/ {sub("^ ", "", $2); sub(" $", "", $2); print $2" = "$2" <"$2">"}' | sort -u > authors.txt

Tim Iznad će stvoriti datoteku autora iz SVN-a.

  • svn log --stop-on-copy <SVN_URL>

Gornja naredba će vam dati prvi broj verzije kada je vaš SVN projekt kreiran.

  • git svn clone -r<SVN_REV_NO>:HEAD --no-minimize-url --stdlayout --no-metadata --authors-file authors.txt <SVN_URL>

Gornja naredba stvorit će spremište Git u lokalnom načinu.

Problem je u tome što neće pretvoriti grane i oznake za push. Morat ćete to učiniti ručno. Na primjer, ispod za ogranke:

 $ git remote add origin https://github.com/pankaj0323/JDProjects.git $ git branch -a * master remotes/origin/MyDevBranch remotes/origin/tags/MyDevBranch-1.0 remotes/origin/trunk $$ git checkout -b MyDevBranch origin/MyDevBranch Branch MyDevBranch set up to track remote branch MyDevBranch from origin. Switched to a new branch 'MyDevBranch' $ git branch -a * MyDevBranch master remotes/origin/MyDevBranch remotes/origin/tags/MyDevBranch-1.0 remotes/origin/trunk $