2012-06-22 11 views
17

Używam Assembla do zarządzania moim repozytorium Subversion. Zacząłem kilka ważnych poprawek do mojej bazy kodów i chcę stworzyć Tag mojej ostatniej wersji produkcyjnej (o której zapomniałem, kiedy kilka tygodni temu pchnąłem ten film do produkcji).Jak utworzyć tag ze starej wersji w Subversion podczas korzystania z Assembli?

Obecnie jestem na wersji 588 i chcę utworzyć znacznik wersji 577. Jak zrobić to z linii poleceń za pomocą Subversion w Assembla?

Załóżmy mój Assembla SVN URL: https://subversion.assembla.com/svn/my_assembla_svn_directory/

Odpowiedz

40

Zawsze można użyć parametru -r odnosić się do określonej wersji. W takim przypadku można również użyć pinezki zmiany wersji @rev, aby upewnić się, że odwołujesz się do układu wersji Subversion w konkretnej wersji. Poniższa utworzy tag od tułowia na rewizji 577 i nazywają ten tag REV-1.2:

$ svn cp -r 577 https://subversion.assembla.com/svn/my_assembla_svn_directory/trunk 
    https://subversion.assembla.com/svn/my_assembla_svn_directory/tags/REV-1.2 

Jeżeli nie masz jeszcze trunk, branches i tags katalogi, musisz przenieść swoją pracę w celu utworzyć niektóre:

$ # Move the current directory to the "trunk" 
$ svn cp https://subversion.assembla.com/svn/my_assembla_svn_directory \ 
    https://subversion.assembla.com/svn/my_assembla_svn_directory/trunk 

$ # Make a corresponding tags and branches directories too 
$ svn mkdir https://subversion.assembla.com/svn/my_assembla_svn_directory/branches 
$ svn mkdir https://subversion.assembla.com/svn/my_assembla_svn_directory/tags 

$ # Now, we can delete the old location. Let your developers know this, 
$ # so they're not surprised by this and will be able to do a "svn relocate" 
$ svn delete https://subversion.assembla.com/svn/my_assembla_svn_directory/ 

$ # Whoops. I should have done the tagging when I had a chance. 
$ #Oh well, we'll use the `@rev` pinning: 

$ svn -r557 cp https://subversion.assembla.com/svn/[email protected] \ 
     https://subversion.assembla.com/svn/my_assembla_svn_directory/tags/REL-1.2 

Subversion nie implementuje tagging i rozgałęzienia wyjątkiem kopii. Nie jest to niezwykłe. Perforce wdraża rozgałęzienia w ten sam sposób. W rzeczywistości, gdy pojawi się stosowanie do niego, to działa naprawdę dobrze:

  • Łatwo zobaczyć ważne gałęzie i tagi (po prostu zrobić svn ls po prawej katalogu
  • pełną historię tagów i gałęzi Łatwo je zobaczyć: możesz zobaczyć, kto wprowadził zmianę, kiedy, dlaczego itp.
  • Wyświetlana jest pełna historia tagu lub gałęzi. Jeśli ktoś zmieni tag lub gałąź, zobaczysz, kto zrobił to bardzo wyraźnie.
  • Zniechęca to rodzaj rozgałęziania, jaki widzisz w wielu innych systemach kontroli wersji, gdy programiści wybierają i wybierają różne gałęzie i pnia, które mają rozgałęziać lub oznaczać. To sprawia, że ​​śledzenie historii jest bardzo trudne. Schemat Subversion zachęca do myślenia o gałęziach i tagach jako mających wpływ na wszystkie pliki w projekcie.
6

prosto z SVN documentation:

Jeśli chcesz utworzyć migawkę/calc/Dokładnie, jak to wygląda w wersji HEAD tułowia, należy jego kopia:

$ svn copy http://svn.example.com/repos/calc/trunk \ 
      http://svn.example.com/repos/calc/tags/release-1.0 \ 
      -m "Tagging the 1.0 release of the 'calc' project." 

Committed revision 902. 

W tym przykładzie założono, że katalog/calc/tags już istnieje. (Jeśli nie, możesz go utworzyć za pomocą svn mkdir.) Po zakończeniu kopiowania , nowy katalog release-1.0 jest na zawsze migawką tego, jak wyglądał katalog/trunk w wersji HEAD w momencie, w którym zrobiłeś kopię. Oczywiście możesz chcieć dokładniej określić dokładnie, którą wersję skopiuj, na wypadek gdyby ktoś inny popełnił zmiany w projekcie, gdy nie patrzysz. Więc jeśli wiesz, że wersja 901/calc/trunk jest właśnie potrzebną migawką, możesz określić ją, przekazując -r 901 komendie svn copy.

(Kopalnia nacisk)

Powiązane problemy