Come si sposta un file?


219

Sto usando TortoiseSVN contro il repository SVN di SourceForge. Vorrei spostare un file da una cartella all'altra per mantenere la cronologia delle revisioni. È possibile? Se così, come fai a farlo?

(La mia strategia attuale è stata quella di copiare il file nella nuova cartella e archiviarlo, quindi eliminare il file dalla cartella corrente.)

Risposte:


95

Subversion ha il supporto nativo per lo spostamento di file.

svn move SOURCE DESTINATION

Per ulteriori informazioni, consultare la guida in linea (svn help move).


O un altro modo di dirlo: svn move <current path/filename> <destination path/filename>
Joe

313

Controlla la sezione 5.14.2. Spostamento di file e cartelle (o controlla "sposta" nell'indice della guida) della guida di TortoiseSVN. Fai una mossa trascinando a destra. Indica inoltre che è necessario eseguire il commit dalla cartella principale per renderla "una" revisione. Questo funziona per fare il cambiamento in una copia di lavoro.

(Si noti che gli elementi SVN nell'immagine seguente verranno visualizzati solo se la cartella di destinazione è già stata aggiunta al repository.)

menu di spostamento tartaruga

È inoltre possibile eseguire lo spostamento tramite il browser Repo (sezione 5.23. Il browser repository della guida).


Quando ho evidenziato tutti i miei file, trascinati a destra, è apparso il normale menu di Windows Explorer. Mi ha permesso di selezionare "sposta" ma non era un'opzione SVN, quindi non sono sicuro che sia successo nulla. Quando ho controllato per vedere se c'erano modifiche, ha detto che 300 file sono stati eliminati e 300 non sono stati aggiornati. Questo non sembra funzionare correttamente. Ho paura di impegnarlo senza sapere se questo è il modo in cui dovrebbe funzionare o no
Joe Phillips,

48
Ho appena realizzato che probabilmente non funzionava perché non avevo ancora aggiunto / eseguito il commit della nuova directory
Joe Phillips,

So che è anni dopo, ma il commento di Joe è importante. ho lottato anche con questo - ho trascurato quella piccola nota nella risposta. La cartella di destinazione deve essere sotto il controllo SVN, altrimenti non funzionerà. Per fortuna SVN consente di aggiungere cartelle vuote. Dopo aver posizionato la cartella sotto il controllo SVN, il trascinamento con il tasto destro del mouse funzionerà come descritto sopra. Altrimenti viene presentato il menu generico "Copia qui / sposta qui / annulla" di Windows (ovvero mancano le scelte SVN).
Ripvlan,

Questo è stato perfetto Ho riscontrato alcuni problemi durante lo spostamento di oltre 1.500 file in una volta sola. Lo spostamento di una directory alla volta sembrava eliminare questo problema.
Michael Murphy,

80

Con TortoiseSVN sposto il file sul disco.

Quando arrivo a confermare le modifiche, seleziono il file mancante e quello nuovo e seleziono " Ripara spostamento " dal menu di scelta rapida:

inserisci qui la descrizione dell'immagine

Ciò significa che posso consentire al mio IDE di spostare file rotondi e utilizzarlo con strumenti di refactoring senza perdere la cronologia.


3
Questo è il mio modo preferito per spostare i file ora. Un avvertimento; esegui solo <20 file alla volta tra i commit, altrimenti può essere molto dispendioso trovare i file correlati tra loro.
DarrenMB,

@DarrenMB ha ragione: sto per migrare un progetto Android da Eclipse ad Android Studio. Tutti i file devono essere spostati. Questo approccio non è quello che voglio usare qui.
Bondax

@Bondax sì, per le migrazioni di interi progetti farai meglio a muoverti all'interno di SVN - dovrebbe essere qualcosa che fai molto occasionalmente. Ho trovato questo il modo migliore per la maggior parte degli spostamenti di file effettuati dalla maggior parte degli sviluppatori durante un progetto.
Keith

1
Nemmeno io ho la mossa di riparazione, usando la tartaruga SVN 1.9.4
Mark Patterson il

@Mark Patterson: vedo l'opzione e sono anche su 1.9.4 (TortoiseSVN 1.9.4, Build 27285 e Subversion 1.9.4, -release). Non credo che il tuo problema sia legato alla versione ... Ecco la documentazione ufficiale di questa funzione: tortoisesvn.net/repairmoves.html
Yosko

37

In TortoiseSVN fai clic con il pulsante destro del mouse da qualche parte e vai TortoiseSVN> Repo Browser per aprire il repository.

Tutto quello che devi fare è trascinare e rilasciare il file da una cartella nel punto desiderato. Ti chiederà di aggiungere un messaggio di commit e lo imposta automaticamente su "File / cartella spostati da remoto"


22

Usando TortoiseSVN faccio semplicemente clic con il pulsante destro del mouse e trascino la cartella da una posizione a un'altra. Quando rilasci il tasto destro del mouse, avrai l'opzione "SVN Sposta il file versione". Tuttavia, credo che SVN non faccia nulla di "fantasia" lì, ma semplicemente elimina il file nella posizione precedente e lo aggiunge alla nuova posizione.


18

Per il client TortoiseSVN:

  1. Seleziona i file che desideri spostare,
  2. Fare clic con il tasto destro e trascinare i file nella cartella in cui si desidera spostarli,
  3. Una finestra si aprirà dopo aver rilasciato il trascinamento della selezione su una cartella. Fai clic su "SVN Sposta qui gli elementi con versione" ,
  4. Dopo aver fatto clic sopra, verrà visualizzata la finestra di messaggio della finestra di commit. Inserisci un messaggio e invia.

Adesso hai finito.


8

Taglia il file tramite il menu di scelta rapida del sistema operativo come fai di solito, quindi invece di incollarlo regolarmente, fai clic con il pulsante destro del mouse per visualizzare il menu di scelta rapida, quindi scegli TortoiseSVN -> Paste(assicurati di eseguire il commit dal root per includere sia i file vecchi che quelli nuovi nel commit).


4

penso che nel browser svn in tartaruga puoi semplicemente trascinarlo da un posto all'altro.


2

Dato che stai usando Tortoise, potresti voler dare un'occhiata a questo link su LosTechies. Dovrebbe essere quasi esattamente quello che stai cercando.

http://www.lostechies.com/blogs/joshua_lockwood/archive/2007/09/12/subversion-tip-of-the-day-moving-files.aspx


3
Poiché tale collegamento potrebbe interrompersi, potresti voler copiare le informazioni pertinenti nella tua risposta.
Cees Timmerman,

3
... E quel collegamento si è rotto. Punto e caso.
Stuart.Sklinar

1

Se non sbaglio a partire dalla versione 1.5, SVN può tracciare i file e le cartelle spostati. In TortoiseSVN è possibile spostare il file trascinandolo.


1

Può anche essere chiamato, "rinomina" da tartaruga, ma svn move, è il comando nel client svn barebone.


la risposta più semplice e accurata è quella! l'uso di TortoiseSVN per spostare i file avviene con il tasto destro del mouse> rinomina. questo è tutto.
RoeeK,

1

Trasferimento di un file tramite TortoiseSVN:

Passaggio: 1 Seleziona i file che desideri spostare, fai clic con il pulsante destro del mouse e trascina i file nella cartella in cui spostarli, verrà visualizzata una finestra dopo aver seguito le istruzioni seguenti

Opzione SVN

Passaggio 2: dopo aver fatto clic su sopra, esegui il commit del file come indicato di seguito

SVN Commit


0

Se si spostano le cartelle tramite il repository Browser, non è disponibile l'opzione Sposta al clic con il tasto destro; l'unico modo è trascinare e rilasciare.

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.