Esiste un modo per eseguire il commit solo di un elenco di file specifici (eq solo uno degli elenchi di file che SVN vuole impegnare).
Sto lavorando su MAC OS X sotto Terminal, senza alcuna interfaccia utente.
Esiste un modo per eseguire il commit solo di un elenco di file specifici (eq solo uno degli elenchi di file che SVN vuole impegnare).
Sto lavorando su MAC OS X sotto Terminal, senza alcuna interfaccia utente.
Risposte:
Sicuro. Elenca solo i file:
$ svn ci -m "Fixed all those horrible crashes" foo bar baz graphics/logo.png
Non sono a conoscenza di un modo per dirlo di ignorare un determinato set di file. Naturalmente, se i file che si desidera eseguire il commit sono elencati facilmente dalla shell, è possibile utilizzare quello:
$ svn ci -m "No longer sets printer on fire" printer-driver/*.c
Puoi anche fare in modo che il comando svn legga l'elenco dei file da eseguire da un file:
$ svn ci -m "Now works" --targets fix4711.txt
svn add
viene utilizzato per aggiungere file ai repository.
Usa le liste dei cambiamenti. Il vantaggio rispetto alla specifica dei file è che è possibile visualizzare e confermare tutto ciò che si desidera sia effettivamente incluso prima di eseguire il commit.
$ svn changelist fix-issue-237 foo.c
Path 'foo.c' is now a member of changelist 'fix-issue-237'.
Fatto ciò, svn ora mantiene le cose separate per te. Questo aiuta quando si destreggiano tra più modifiche
$ svn status
A bar.c
A baz.c
--- Changelist 'fix-issue-237':
A foo.c
Infine, digli di impegnare ciò che volevi fosse cambiato.
$ svn commit --changelist fix-issue-237 -m "Issue 237"
svn changelist fix-issue-237 --recursive path/to/directory
Fondamentalmente metti i file che vuoi commettere sulla riga di comando
svn ci file1 file2 dir1/file3
A causa del mio stato di sovversione, ho dovuto diventare creativo. svn st
ha mostrato M
, A
e ~
gli stati. Volevo solo M
e A
quindi ...
svn st | grep ^[A\|M] | cut -d' ' -f8- > targets.txt
Questo comando dice di trovare tutte le linee svn st
che iniziano con quella che inizia con M
o A
, tagliare usando il delimitatore di spazio, quindi ottenere le colonne 8 alla fine. Scaricalo in target.txt e sovrascrivi.
Quindi modificare target.txt per eliminare ulteriormente l'elenco dei file. Quindi esegui di seguito per eseguire il commit:
svn ci -m "My commit message" --targets targets.txt
Probabilmente non è il caso d'uso più comune, ma si spera che aiuti qualcuno.
grep -v '^~'
per inserire nella blacklist ciò che desideri.
Oltre a elencare i file in modo esplicito come mostrato da unwind e Wienczny , è possibile impostare elenchi di modifiche e controllarli. Ciò consente di gestire serie di modifiche disgiunte nella stessa copia di lavoro.
Puoi leggerli nella versione online dell'eccellente libro SVN .
prova questo script ..
#!/bin/bash
NULL="_"
for f in `svn st|grep -v ^\?|sed s/.\ *//`;
do LIST="${LIST} $f $NULL on";
done
dialog --checklist "Select files to commit" 30 60 30 $LIST 2>/tmp/svnlist.txt
svn ci `cat /tmp/svnlist.txt|sed 's/"//g'`
Faccio una (sotto) cartella denominata "nascondi", muovo il file a cui non voglio impegnarmi. Quindi esegui il commit, ignorando il reclamo per il file mancante. Quindi spostare il file nascosto da hide a ./
Non conosco alcun aspetto negativo di questa tattica.