Subversion non ha una funzione integrata "non eseguire il commit" / "ignora il commit", a partire da febbraio 2016 / versione 1.9. Questa risposta è una soluzione alternativa non ideale della riga di comando
Come afferma l'OP, TortoiseSVN ha un elenco di modifiche incorporato, "ignore-on-commit", che viene automaticamente escluso dai commit. Il client della riga di comando non ha questo, quindi è necessario utilizzare più elenchi modifiche per ottenere lo stesso comportamento (con avvertenze) :
- uno per lavoro che vuoi impegnare [lavoro]
- uno per le cose che vuoi ignorare [ignore-on-commit]
Dato che c'è un precedente con TortoiseSVN, nei miei esempi uso "ignore-on-commit" per i file che non voglio impegnare. Userò "lavoro" per i file che faccio, ma potresti scegliere qualsiasi nome tu voglia.
Innanzitutto, aggiungi tutti i file a un elenco modifiche denominato "lavoro". Questo deve essere eseguito dalla radice della tua copia di lavoro:
svn cl work . -R
Ciò aggiungerà ricorsivamente tutti i file nella copia di lavoro all'elenco delle modifiche denominato "lavoro". Ciò presenta uno svantaggio: poiché i nuovi file vengono aggiunti alla copia di lavoro, dovrai aggiungere in modo specifico i nuovi file o non verranno inclusi. In secondo luogo, se devi eseguirlo di nuovo, dovrai aggiungere nuovamente tutti i tuoi file "ignora-on-commit". Non ideale: potresti iniziare a mantenere il tuo elenco "ignora" in un file come hanno fatto altri.
Quindi, per i file che si desidera escludere:
svn cl ignore-on-commit path\to\file-to-ignore
Poiché i file possono essere solo in una lista modifiche, l'esecuzione di questa aggiunta dopo la precedente aggiunta "lavoro" rimuoverà il file che si desidera ignorare dalla lista modifiche "lavoro" e lo inserirà nella lista modifiche "ignora-on-commit".
Quando sei pronto per eseguire il commit dei file modificati che desideri eseguire il commit, aggiungi semplicemente "--cl work" al tuo commit:
svn commit --cl work -m "message"
Ecco come appare un semplice esempio sulla mia macchina:
D:\workspace\trunk>svn cl work . -R
Skipped '.'
Skipped 'src'
Skipped 'src\conf'
A [work] src\conf\db.properties
Skipped 'src\java'
Skipped 'src\java\com'
Skipped 'src\java\com\corp'
Skipped 'src\java\com\corp\sample'
A [work] src\java\com\corp\sample\Main.java
Skipped 'src\java\com\corp\sample\controller'
A [work] src\java\com\corp\sample\controller\Controller.java
Skipped 'src\java\com\corp\sample\model'
A [work] src\java\com\corp\sample\model\Model.java
Skipped 'src\java\com\corp\sample\view'
A [work] src\java\com\corp\sample\view\View.java
Skipped 'src\resource'
A [work] src\resource\icon.ico
Skipped 'src\test'
D:\workspace\trunk>svn cl ignore-on-commit src\conf\db.properties
D [work] src\conf\db.properties
A [ignore-on-commit] src\conf\db.properties
D:\workspace\trunk>svn status
--- Changelist 'work':
src\java\com\corp\sample\Main.java
src\java\com\corp\sample\controller\Controller.java
src\java\com\corp\sample\model\Model.java
M src\java\com\corp\sample\view\View.java
src\resource\icon.ico
--- Changelist 'ignore-on-commit':
M src\conf\db.properties
D:\workspace\trunk>svn commit --cl work -m "fixed refresh issue"
Sending src\java\com\corp\sample\view\View.java
Transmitting file data .done
Committing transaction...
Committed revision 9.
Un'alternativa sarebbe quella di aggiungere semplicemente tutti i file che si desidera impegnare in un elenco di modifiche "lavoro" e non mantenere nemmeno un elenco ignorato, ma anche questo è molto lavoro. In realtà, l'unica soluzione semplice e ideale è se / quando questo viene implementato in SVN stesso. C'è un problema di vecchia data al riguardo nel tracker dei problemi di Subversion, SVN-2858 , nel caso in cui questo cambi in futuro.