Eliminazione di un ramo SVN


91

Ho creato un ramo di un progetto SVN chiamato "caratteristiche", e ora ogni volta che provo ad aggiornare detto progetto, porta con sé una cartella delle caratteristiche, che contiene un'altra copia del progetto dal ramo. C'è un modo per rimuovere completamente il ramo dal repository in modo che ciò non accada più?


Possibile duplicato di Elimina un ramo
Jim G.

Risposte:


110

Certo: svn rmla cartella indesiderata e il commit.

Per evitare questa situazione in futuro, seguirei il layout consigliato per i progetti SVN:

  • Metti il ​​tuo codice nella /someproject/trunkcartella (o solo /trunkse vuoi mettere un solo progetto nel repository)
  • Creati rami come /someproject/branches/somebranch
  • Metti i tag sotto /someproject/tags

Ora, quando esegui il check out di una copia funzionante, assicurati di effettuare il check out solo trunko di qualche singolo ramo. Non controllare tutto in un'unica enorme copia di lavoro contenente tutti i rami. 1

1 A meno che tu non sappia cosa stai facendo, nel qual caso sai come creare copie di lavoro superficiali.


58

Supponendo che questo ramo non sia un collegamento esterno o simbolico, rimuovere il ramo dovrebbe essere semplice come:

svn rm branches/< mybranch >

svn ci -m "message"

Se desideri farlo nel repository, aggiorna per rimuoverlo dalla tua copia di lavoro puoi fare qualcosa come:

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

Quindi esegui:

svn update

26
dal libro : "L'eliminazione di un URL, tuttavia, è immediata, quindi devi fornire un messaggio di log [con -m]" così svn rm -m message http://...e non è updaterichiesto
rymo

57

Per coloro che utilizzano TortoiseSVN , è possibile farlo utilizzando il browser del repository (è etichettato "browser del repository" nel menu contestuale.)

menù contestuale

Trova la cartella del ramo che desideri eliminare, fai clic con il pulsante destro del mouse e seleziona "Elimina".

l'eliminazione della cartella

Inserisci il tuo messaggio di commit e il gioco è fatto.

impegnandosi


Eseguire un aggiornamento SVN per rimuovere le cartelle dal disco (se non eliminate prima di rimuovere il ramo)
ArieKanarie

12

È inoltre possibile eliminare direttamente il ramo sul telecomando. Fatto ciò, il prossimo aggiornamento lo rimuoverà dalla tua copia di lavoro.

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

L' ^abbreviazione per l'URL del telecomando, come si vede in "svn info". Le virgolette doppie sono necessarie sulla riga di comando di Windows, perché ^è un carattere speciale.

Questo comando funzionerà anche se non hai mai estratto il ramo.


L'ho usato da un Mac e ha funzionato bene! Quando ho provato la risposta migliore ho ottenuto la risposta "'/ local / path / to / repo / branch / branch-name' non è una copia funzionante" quindi presumibilmente non sono mai riuscito a controllare il ramo che ho creato
Mad Bernard

3

Puoi eliminare la cartella delle funzionalità come qualsiasi altra nel tuo checkout, quindi eseguire il commit della modifica.

Per evitare che ciò accada in futuro, ti suggerisco di seguire le convenzioni di denominazione per il layout SVN.

Assegna a ogni progetto un tronco, rami, una cartella di tag quando vengono creati.

svn
+ project1
  + trunk
    + src
    + etc...
  + branches
    + features
      + src
      + etc...
  + tags
+ project2
  + trunk
  + branches
  + tags

3

Dalla copia di lavoro:

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


3

Il comando per eliminare un ramo è il seguente:

svn elimina -m "<il tuo messaggio>" <url del ramo>

Se desideri non recuperare / controllare l'intero repository, esegui il seguente comando sul tuo terminale:

1) ottieni il percorso assoluto della directory che conterrà la tua copia di lavoro
> pwd
2) Avvia il checkout del codice svn
svn> verifica svn <url ramo> <percorso assoluto dal punto 1>

I passaggi precedenti ti porteranno i file all'interno della cartella del ramo e non l'intera cartella.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.