Come aggiungere una cartella esistente con file a SVN?


85

Come si aggiunge una cartella senza controllo della versione a una posizione SVN specifica? Spesso inizio a scrivere codice e solo dopo aver alcune cartelle contenenti file di codice lo aggiungo a SVN.

Quello che faccio di solito è:

  1. svn co la directory principale in cui voglio creare una nuova cartella per memorizzare il mio codice.
  2. svn mkdir per creare la directory in cui voglio inserire il mio codice.
  3. Copia e incolla il mio codice.
  4. svn commit .
  5. Elimina la mia directory del codice di lavoro corrente.
  6. Ricrea la mia directory del codice di lavoro usando svn co .

Risposte:


135

Diciamo che ho del codice nella directory ~/local_dir/myNewAppe voglio metterlo sotto " https://svn.host/existing_path/myNewApp " (pur essendo in grado di ignorare alcuni binari, librerie di fornitori, ecc.).

  1. Crea una cartella vuota nel repository svn mkdir https://svn.host/existing_path/myNewApp
  2. Vai alla directory principale del progetto, cd ~/local_dir
  3. Controlla la directory vuota nella cartella locale. Non aver paura: i file che hai localmente non verranno eliminati. svn co https://svn.host/existing_path/myNewApp. Se la cartella ha un nome diverso a livello locale rispetto a quello del repository, è necessario specificarlo come argomento aggiuntivo.
  4. Puoi vedere che svn stora mostrerà tutti i tuoi file come ?, il che significa che non sono attualmente sotto controllo di revisione
  5. Esegui svn addsui file che desideri aggiungere al repository e aggiungerne altri svn:ignore. Potresti trovare alcune opzioni utili con svn help add, ad esempio --parentso --depth empty, quando desideri aggiungere selettivamente solo alcuni file / cartelle.
  6. Impegnati con svn ci

Al punto 5: puoi aggiungere tutti i file / directory della tua directory di lavoro in questo modo in bash: find . -name .svn -prune -o -print0|xargs -0 svn add
Nicolas M

1
Il miglior how-to che abbia mai visto per ottenere nuove cose in svn.
Colin 't Hart

come si fa: "Se la cartella ha un nome diverso a livello locale rispetto al repository, è necessario specificarlo come argomento aggiuntivo"
Kristof Pal,

1
@KristofPal:svn co https://svn.host/existing_path/myNewApp ~/local_dir/localNameOfFolder
qbolec

1
Grazie @qbolec, per "non aver paura". +1 su tutte le "risposte migliori". Come suggerimento per coloro che potrebbero ancora avere paura: puoi sostenere il tuo lavoro se hai ancora paura.
Stephan Samuel

55

Se ho capito bene il tuo caso d'uso, ti consiglio di provare a usare svn add per mettere la nuova cartella sotto versione, vedi qui . Quanto segue aggiungerà la nuova cartella con i file in modo ricorsivo sotto il controllo della versione (se ci si trova all'interno di una copia di lavoro valida):

svn add new_folder
svn commit -m "Add New folder to the project"

Se non sei in una copia funzionante , creala con svn checkout , copia new_folder lì ed esegui i passaggi precedenti.

O

Prova l' importazione di svn , vedi qui ; quanto segue creerà una nuova cartella e caricherà i file nel repository:

svn import -m "Import new folder to the project" new_folder \
        http://SVN_REPO/repos/trunk/new_folder

Notare inoltre che:

Dopo aver importato i dati, notare che l'albero originale non è sotto il controllo della versione. Per iniziare a lavorare, è ancora necessario svn estrarre una nuova copia funzionante dell'albero


Ma la cartella principale non è sotto il controllo della versione. Come fa a sapere dove metterlo nel repository svn
Siecje

Non è chiaro per me dove sono le tue cartelle allora, stai lavorando non nella "copia di lavoro"?
pmod

Ho un repository svn già esistente con cartelle. Creo file e cartelle non svn e vorrei aggiungerli al repository. Il modo in cui lo faccio ora è estrarre una directory sopra dove voglio mettere il mio progetto. Quindi copio incolla nella posizione di checkout e aggiungo svn lì.
Siecje

@Siecje Penso che ora capisco cosa intendi
pmod

quindi devo fare un checkout il che significa che devo cancellare i file e scaricarli di nuovo da SVN? Quindi per i file del sito Web il sito dovrebbe essere disattivato per un secondo mentre lo faccio?
Siecje

9

Non uso i comandi. Dovresti essere in grado di farlo utilizzando la GUI:

  • Fare clic con il pulsante destro del mouse su uno spazio vuoto nella cartella Documenti, selezionare TortoiseSVN> Repo-browser.
  • Immettere http: // subversion ... (il percorso URL del server / directory Subversion in cui salvare) come percorso e selezionare OK
  • Fare clic con il pulsante destro del mouse sulla directory principale in Repo e selezionare Aggiungi cartella . Dagli il nome del tuo progetto e crealo.
  • Fare clic con il pulsante destro del mouse sulla cartella del progetto nel browser Repo e selezionare Checkout . La directory Checkout sarà la tua Visual Studio\Projects\{your project}cartella. Seleziona OK.
  • Riceverai un avviso che la cartella non è vuota. Dì per effettuare il checkout / esportare in quella cartella: non sovrascriverà i file di progetto.
  • Apri la cartella del tuo progetto. Vedrai dei punti interrogativi sulle cartelle associate al tuo progetto VS che non sono ancora state aggiunte a Subversion. Seleziona quelle cartelle usando Ctrl + clic, quindi fai clic con il pulsante destro del mouse su uno degli elementi selezionati e seleziona TortoiseSVN> Aggiungi
  • Seleziona OK nel prompt
  • I tuoi file dovrebbero aggiungere. Seleziona OK su Aggiungi finito! dialogo
  • Fare clic con il pulsante destro del mouse in un'area vuota della cartella e selezionare Aggiorna. Ora vedrai le icone "+" sulle cartelle / file
  • Fare nuovamente clic con il pulsante destro del mouse su un'area vuota nella cartella e selezionare SVN Commit
  • Aggiungi un messaggio relativo a ciò che stai impegnando e fai clic su OK

1

Se l'intenzione è quella di aggiungere la copia locale / di lavoro a SVN, lo facevo nel modo seguente.

Nota: utilizzo il client TortoiseSVN e questi passaggi presuppongono che tu abbia già installato il client TortoiseSVN.

  1. Ho un progetto (Test-4.2.2) nel mio locale. Voglio caricarlo / aggiungerlo a un repository SVN.
  2. Utilizzando il repo-browser TortoiseSVN, ho creato una directory vuota, "Test-4.2.2"
  3. Nel mio locale ho rinominato la directory "Test-4.2.2" esistente in "Test-4.2.2.1" (temporanea)
  4. Controlla il vuoto "Test-4.2.2" da SVN al tuo locale
  5. Copiare tutte le sottodirectory sotto 4.2.2.1 in questa directory di checkout 4.2.2
  6. Ora, fai clic con il pulsante destro del mouse su "Test-4.2.2" e conferma.
  7. Elimina la cartella temporanea, "Test-4.2.2.1"

1

In Windows 7 ho fatto questo:

  1. Hai installato SVN e Tortoise SVN? In caso contrario, cercali su Google e fallo ora.
  2. Vai alla tua cartella SVN dove potresti avere altri repository (abbreviazione di repository) (o se ne stai creando uno da zero, scegli un'unità C, un'unità D, ecc. O un percorso di rete).
  3. Crea una nuova cartella per archiviare il tuo nuovo repository. Chiamalo con lo stesso nome del titolo del tuo progetto
  4. Fare clic con il tasto destro sulla cartella e scegliere Tortoise SVN -> Crea repository qui
  5. Dì di sì a Crea struttura di cartelle
  6. Fare clic su OK. Dovresti vedere una nuova icona che assomiglia a una "wave" accanto alla tua nuova cartella / repository
  7. Fare clic con il pulsante destro del mouse sul nuovo repository e scegliere SVN Repo Browser
  8. Fare clic con il tasto destro su "tronco"
  9. Scegli AGGIUNGI cartella ... e punta alla struttura delle cartelle del tuo progetto in fase di sviluppo.
  10. Fare clic su OK e SVN AGGIUNGERÀ la struttura delle cartelle. Sii paziente! Sembra che SVN si sia bloccato / bloccato. Non preoccuparti. Sta facendo il suo lavoro.

Fatto!


0

3 passaggi:

  • Apri "Repo Browser" (usa il link della tua cartella principale).
  • Fai clic con il pulsante destro del mouse su Scegli "Aggiungi cartella".
  • Sfoglia la tua cartella.

inserisci qui la descrizione dell'immagine


Non puoi aggiungere una cartella che non esiste, in questo modo. "Aggiungi cartella" ti darà una finestra di Explorer in modo da poter puntare a una cartella esistente, quindi dare una finestra di commit in modo da poterla aggiungere a Subversion. Non è per creare una nuova cartella sul lato locale - che dovrebbe comunque essere fatto manualmente e popolato lì, quindi questo potrebbe essere usato per inviare i suoi contenuti a Subversion. Questo dà solo metà della storia.
vapcguy

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.