[ Pobierz całość w formacie PDF ]
.Subversion musi sklonować każdą rewizję osobno i następnie wypchnąć ją ponownie do innego repozytorium -jest to strasznie nieefektywne, ale jest to jedyna łatwa droga aby to zrobić.Pierwsze krokiTeraz, gdy masz już lokalne repozytorium Subversion z uprawnieniami do zapisu, możesz zobaczyć jak się z nim pracuje.Rozpocznij za pomocą komendy git svn clone, która zaimportuje całe repozytorium Subversion do lokalnego repozytorium Gita.Pamiętaj że, jeżeli importujesz z prawdziwego zdalnego repozytorium, powinieneś podmienić file:///tmp/test-svn na adres URLtego repozytorium:$ git svn clone file:///tmp/test-svn -T trunk -b branches -t tagsInitialized empty Git repository in /Users/schacon/projects/testsvnsync/svn/.git/r1 = b4e387bc68740b5af56c2a5faf4003ae42bd135c (trunk)A m4/acx_pthread.m4A m4/stl_hash.m4.r75 = d1957f3b307922124eec6314e15bcda59e3d9610 (trunk)Found possible branch point: file:///tmp/test-svn/trunk => \file:///tmp/test-svn /branches/my-calc-branch, 75Found branch parent: (my-calc-branch) d1957f3b307922124eec6314e15bcda59e3d9610Following parent with do_switchSuccessfully followed parentr76 = 8624824ecc0badd73f40ea2f01fce51894189b01 (my-calc-branch)Checked out HEAD:file:///tmp/test-svn/branches/my-calc-branch r76Uruchomienie tej komendy jest równoznaczne z dwiema komendami - git svn init oraz git svn fetch - wykonanymi na adresieURL który podałeś.Może to chwilę zająć.Testowy projekt ma tylko około 75 commitów, a kod nie jest duży, więc nie potrwato długo.Jednak Git musi sprawdzić każdą wersję, po kolei i zapisać ją osobno.W projektach które mają setki lub tysiącecommitów, może to zająć kilka godzin, a nawet dni.Część -T trunk -b branches -t tags mówi Gitowi, że to repozytorium Subversion jest zgodne z przyjętymi konwencjami tworzeniagałęzi i tagów.Jeżeli inaczej nazwiesz swoje katalogi trunk, branches i tags, powinieneś zmienić te opcje.Ze względu na to,że jest to bardzo popularne podejście, możesz całą tą cześć zamienić opcją -s, która oznacza standardowy układ projektu izakłada wszystkie te opcje.Poniższa komenda jest równoważna z poprzednią:$ git svn clone file:///tmp/test-svn -sW tym momencie, powinieneś mieć poprawne repozytorium Gita, które ma zaimportowane wszystkie gałęzie i tagi:$ git branch -a* mastermy-calc-branchtags/2.2tags/release-2.1tags/release-2.2tags/release-2.2rc1trunkWarto zaznaczyć, że to narzędzie używa innego schematu nazw do zdalnych gałęzi.Kiedy klonujesz tradycyjne repozytoriumGita, otrzymujesz wszystkie gałęzie które były na tym zdalnym serwerze dostępne lokalnie, pod nazwami takimi jakorigin/[gałąz] - poprzedzone nazwą zdalnego repozytorium.Jednakże, git svn zakłada że nie masz wielu zdalnych repozytoriów izapisuje wszystkie swoje referencje wskazujące na zdalny serwer bez poprzedzania ich nazwą.Możesz użyć komendy show-ref, aby zobaczyć wszystkie referencje:$ git show-ref1cbd4904d9982f386d87f88fce1c24ad7c0f0471 refs/heads/masteraee1ecc26318164f355a883f5d99cff0c852d3c4 refs/remotes/my-calc-branch03d09b0e2aad427e34a6d50ff147128e76c0e0f5 refs/remotes/tags/2.250d02cc0adc9da4319eeba0900430ba219b9c376 refs/remotes/tags/release-2.14caaa711a50c77879a91b8b90380060f672745cb refs/remotes/tags/release-2.21c4cb508144c513ff1214c3488abe66dcb92916f refs/remotes/tags/release-2.2rc11cbd4904d9982f386d87f88fce1c24ad7c0f0471 refs/remotes/trunkNormalne repozytorium Gita wygląda tak jak to:$ git show-ref83e38c7a0af325a9722f2fdc56b10188806d83a1 refs/heads/master3e15e38c198baac84223acfc6224bb8b99ff2281 refs/remotes/gitserver/master0a30dd3b0c795b80212ae723640d4e5d48cabdff refs/remotes/origin/master25812380387fdd55f916652be4881c6f11600d6f refs/remotes/origin/testingMasz dwa zdalne serwery: jeden nazwany gitserver z gałęzią master; oraz drugi nazwany origin z dwiema gałęziami, master i testing.Zauważ, jak w przykładowym imporcie stworzonym przez git svn wyglądają zdalne referencje, tagi zostały dodane jako zdalnegałęzie, a nie normalne tagi.Twój import Subversion wygląda tak, jakby miał dodany zdalny serwer pod nazwą "tags", któryzawiera gałęzie.Wgrywanie zmian do SubversionTeraz gdy masz już działające repozytorium, możesz wprowadzić zmiany w projekcie i wypchnąć swoje commity dozdalnego serwera, używając Gita jako klienta SVN.Jeżeli zmodyfikujesz jeden z plików i commitniesz zmiany, będziesz miałje widoczne w lokalnym repozytorium Gita, ale nie istniejące na serwerze Subversion:$ git commit -am 'Adding git-svn instructions to the README'[master 97031e5] Adding git-svn instructions to the README1 files changed, 1 insertions(+), 1 deletions(-)Następnie, powinieneś wypchnąć zmiany.Zauważ jak to zmienia sposób w jaki pracujesz w Subversion - możeszwprowadzić kilka commitów bez dostępu do sieci, a potem wypchnąć je wszystkie w jednym momencie do serweraSubversion [ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • elanor-witch.opx.pl