Usuwanie oddziału SVN

91

Utworzyłem gałąź projektu SVN o nazwie „funkcje” i teraz, gdy próbuję zaktualizować wspomniany projekt, pojawia się folder Features, który zawiera kolejną kopię projektu z tej gałęzi. Czy jest sposób, aby całkowicie usunąć gałąź z repozytorium, aby to się więcej nie zdarzało?

GSto
źródło
Możliwy duplikat Usuń gałąź
Jim G.

Odpowiedzi:

110

Jasne: svn rmniechciany folder i zatwierdzenie.

Aby uniknąć takiej sytuacji w przyszłości, zastosowałbym zalecany układ dla projektów SVN:

  • Umieść swój kod w /someproject/trunkfolderze (lub po prostu /trunkjeśli chcesz umieścić tylko jeden projekt w repozytorium)
  • Utworzono gałęzie jako /someproject/branches/somebranch
  • Umieść tagi pod /someproject/tags

Teraz, kiedy sprawdzasz kopię roboczą, pamiętaj, aby sprawdzić tylko trunklub pojedynczy oddział. Nie sprawdzaj wszystkiego w jednej ogromnej kopii roboczej zawierającej wszystkie gałęzie. 1

1 Chyba że wiesz, co robisz, w takim przypadku wiesz, jak tworzyć płytkie kopie robocze.

Wim Coenen
źródło
58

Zakładając, że ta gałąź nie jest linkiem zewnętrznym ani symbolicznym, usunięcie tej gałęzi powinno być tak proste, jak:

svn rm branches/< mybranch >

svn ci -m "message"

Jeśli chcesz to zrobić w repozytorium, zaktualizuj, aby usunąć je z kopii roboczej, możesz zrobić coś takiego:

svn rm http://< myurl >/< myrepo >/branches/< mybranch >

Następnie uruchomić:

svn update
grmartin
źródło
26
z książki : "Usunięcie adresu URL jest jednak natychmiastowe, więc musisz podać komunikat dziennika [z -m]" więc svn rm -m message http://...i nie jest updatewymagane
rymo
57

Dla tych, którzy używają TortoiseSVN , możecie to osiągnąć za pomocą przeglądarki repozytorium (jest ona oznaczona jako „Przeglądarka repozytoriów” w menu kontekstowym).

menu kontekstowe

Znajdź folder oddziału, który chcesz usunąć, kliknij go prawym przyciskiem myszy i wybierz opcję „Usuń”.

usuwanie folderu

Wpisz treść swojej zmiany i gotowe.

zobowiązanie się

2rs2ts
źródło
Wykonaj aktualizację SVN, aby usunąć foldery z dysku (jeśli nie zostały usunięte przed usunięciem gałęzi)
ArieKanarie
12

Możesz także bezpośrednio usunąć oddział na pilocie. Po wykonaniu tej czynności następna aktualizacja usunie go z kopii roboczej.

svn rm "^/reponame/branches/name_of_branch" -m "cleaning up old branch name_of_branch"

Jest ^to skrót od adresu URL pilota, jak widać w 'svn info'. Podwójne cudzysłowy są konieczne w wierszu poleceń systemu Windows, ponieważ ^jest to znak specjalny.

To polecenie zadziała również, jeśli nigdy nie sprawdzałeś gałęzi.

CodeKid
źródło
Użyłem tego z komputera Mac i działało dobrze! Kiedy wypróbowałem pierwszą odpowiedź, otrzymałem odpowiedź „/ local / path / to / repo / branches / branch-name” nie jest kopią roboczą, więc prawdopodobnie nigdy nie udało mi się sprawdzić oddziału, który zrobiłem
Mad Bernard
3

Możesz usunąć folder funkcji tak samo, jak każdy inny w kasie, a następnie zatwierdzić zmianę.

Aby temu zapobiec w przyszłości, sugeruję przestrzeganie konwencji nazewnictwa dla układu SVN.

Każdemu projektowi nadaj główny, rozgałęzienia, folder tagów podczas ich tworzenia.

svn
+ project1
  + trunk
    + src
    + etc...
  + branches
    + features
      + src
      + etc...
  + tags
+ project2
  + trunk
  + branches
  + tags
Chris Nava
źródło
3

Z kopii roboczej:

svn rm branches/features
svn commit -m "delete stale feature branch"

sbi
źródło
3

Polecenie usunięcia gałęzi jest następujące:

svn delete -m "<twoja wiadomość>" <url gałęzi>

Jeśli nie chcesz pobierać / pobierać całego repozytorium, wykonaj następujące polecenie na swoim terminalu:

1) uzyskaj bezwzględną ścieżkę do katalogu, który będzie zawierał twoją kopię roboczą
> pwd
2) Rozpocznij pobieranie kodu
svn> svn checkout <adres URL oddziału> <bezwzględna ścieżka z punktu 1>

Powyższe kroki spowodują, że pliki znajdują się w folderze gałęzi, a nie w całym folderze.

Alvin Chettiar
źródło