Domanda

Sono passato da TFS a SVN (TortoiseSVN) con la mia attuale azienda.Mi manca davvero la funzione "Helve" di TFS.Ho letto vari articoli su come "accantonare" con SVN, ma non ho letto nulla che offra un'esperienza molto semplice per "accantonare" il lavoro.

Idealmente, vorrei che fossero aggiunti elementi extra al menu contestuale di TortoiseSVN: "Rimetti da parte" e "Unshelve"."Shelve" rimuoverebbe l'attuale shelve-set e caricherebbe la directory di lavoro sotto un percorso adatto definito dalle opzioni utente."Unshelve" unirebbe il set con la copia di lavoro.

Esiste qualcosa del genere?Qualcuno può suggerire qualche modo per "hackerare" questa funzionalità nella GUI?

Nota:Il seguente collegamento non raggiunge realmente l'esperienza utente che stavo cercando:

Sovversione degli scaffali

Una delle cose più belle di TFS Shelve è la facilità d'uso...

È stato utile?

Soluzione

Lo scaffale in SVN sta iniziando a essere implementato con la versione 1.10, vedere Note di rilascio

Altri suggerimenti

Non credo che SVN abbia questa funzionalità integrata nel prodotto server.Inoltre, non credo che nulla di simile sia emulato in nessun client che ho utilizzato, incluso TortoiseSVN.

Per aggirare questo problema, ho fatto ricorso all'utilizzo di un DVCS come Idiota O Mercuriale, per consentirmi di ramificarmi/unire/accantonare localmente prima di reinserire il contenuto in SVN.È probabilmente un po' complicato, ma funziona davvero bene.

Se capisci come funzionano i rami SVN, emulare Shelve in SVN è un gioco da ragazzi:

  1. Creare un ramo nel repository (sul server)
  2. Passa la tua copia locale ad esso
  3. Applica le tue modifiche al nuovo ramo
  4. Riporta la tua copia locale nel trunk

Quando sei pronto per tornare alle modifiche accantonate ("unshelve"), unisci semplicemente il ramo dello scaffale alla tua copia locale.

Se non conosci abbastanza bene SVN da riga di comando né Tortoise SVN per eseguire quanto sopra, ecco un'istruzione passo passo super dettagliata su come farlo in Tortoise SVN:

  1. Esegui "Aggiornamento SVN" per aggiornare la tua copia di lavoro all'ultima versione del trunk.In questo modo le uniche differenze tra la tua copia locale e il trunk sono le tue modifiche.
  2. Dal menu contestuale selezionare "Ramo/Tag"
  3. L'opzione "Versione HEAD nel repository" è selezionata per impostazione predefinita.Tienilo.
  4. Modificare "A URL" per specificare il nome del ramo, ad es. http://server/repository/project1/branches/shelf1
  5. Seleziona la casella "Cambia copia di lavoro in nuovo ramo/tag".
  6. Fare clic su Ok per creare il ramo e passare ad esso
  7. Esegui "SVN Commit..." e conferma le modifiche al ramo appena creato
  8. Dal menu contestuale selezionare "Cambia..."
  9. Cambia "A URL" nell'URL del trunk, ad es. http://server/repository/project1/trunk
  10. Fare clic su Ok per tornare al trunk

Vedi questo collegamento per ulteriori dettagli e l'equivalente da riga di comando di quanto sopra:
Scaffali in sovversione

Un'altra opzione è utilizzare la funzione "Crea patch" in TortoiseSvn per creare un file di patch e annullare le modifiche.Il file patch può essere successivamente riapplicato per tornare al punto in cui ti trovavi.

Potresti comunque ritrovarti con alcune fusioni persistenti se devi aggiornare la revisione della copia di lavoro.

SVN ha aggiornato gli scaffalihttps://subversion.apache.org/docs/release-notes/1.11.html#shelving

I tipi di modifica che puoi accantonare sono modifiche commessi a file e proprietà, tranne i seguenti tipi che non sono ancora supportati:

  • copie e spostamenti
  • creazione ed eliminazione di directory

Puoi usare un DVCS ma in un certo senso è un errore.'Shelving' in un DVCS memorizza le modifiche solo localmente.È utile solo se desideri eseguire il checkpoint del tuo lavoro per eseguire il rollback se lo interrompi con ulteriore lavoro, ma preferibilmente vorresti salvare il tuo lavoro sul server.

Un modo per farlo in SVN senza un comando shelve esplicito è spostare la copia di lavoro in una posizione svn diversa ed eseguire il commit lì invece che sul repository principale.Questo è effettivamente come creare un ramo temporaneo e lavorarci sopra per tutta la durata del tuo lavoro.Non penso che dovrai nemmeno unirti poiché SVN lo farà per te quando cambi, poiché le modifiche locali verranno mantenute.

Sfortunatamente, non puoi passare a una posizione inesistente, quindi la prima volta che lo fai, dovrai creare il "ramo" in cui accantonarlo.Immagino che il tutto potrebbe essere automatizzato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top