Subversion nie ma wbudowanej funkcji „nie zatwierdzaj” / „ignoruj przy zatwierdzaniu” od lutego 2016 r. / Wersja 1.9. Ta odpowiedź jest nieidealnym obejściem wiersza polecenia
Jak stwierdza OP, TortoiseSVN ma wbudowaną listę zmian „ignoruj przy zatwierdzeniu”, która jest automatycznie wykluczana z zatwierdzeń. Klient wiersza poleceń nie ma tego, więc musisz użyć wielu list zmian, aby osiągnąć to samo zachowanie (z zastrzeżeniami) :
- jeden za pracę, którą chcesz się zaangażować [praca]
- jeden na rzeczy, które chcesz zignorować [ignoruj przy zatwierdzeniu]
Ponieważ istnieje precedens z TortoiseSVN, używam "ignoruj przy zatwierdzaniu" w moich przykładach dla plików, których nie chcę zatwierdzać. Użyję słowa „praca” dla plików, które robię, ale możesz wybrać dowolną nazwę.
Najpierw dodaj wszystkie pliki do listy zmian o nazwie „praca”. To musi być uruchamiane z katalogu głównego twojej kopii roboczej:
svn cl work . -R
Spowoduje to rekurencyjne dodanie wszystkich plików w kopii roboczej do listy zmian o nazwie „praca”. Jest to wada - ponieważ nowe pliki są dodawane do kopii roboczej, musisz specjalnie dodać nowe pliki, inaczej nie zostaną uwzględnione. Po drugie, jeśli będziesz musiał uruchomić to ponownie, będziesz musiał ponownie dodać wszystkie swoje pliki „ignoruj przy zatwierdzaniu”. Niezbyt idealne - możesz zacząć utrzymywać własną listę „ignorowanych” w pliku, tak jak robili to inni.
Następnie dla plików, które chcesz wykluczyć:
svn cl ignore-on-commit path\to\file-to-ignore
Ponieważ pliki mogą znajdować się tylko na jednej liście zmian, uruchomienie tego dodatku po poprzednim dodaniu „roboczym” usunie plik, który chcesz zignorować z listy zmian „pracy” i umieści go na liście zmian „ignoruj przy zatwierdzeniu”.
Kiedy jesteś gotowy do zatwierdzenia zmodyfikowanych plików, które chcesz zatwierdzić, możesz po prostu dodać „--cl work” do swojego zatwierdzenia:
svn commit --cl work -m "message"
Oto jak wygląda prosty przykład na moim komputerze:
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.
Alternatywą byłoby po prostu dodanie każdego pliku, który chcesz zatwierdzić, do listy zmian „roboczych”, a nawet nie utrzymywanie listy ignorowanych, ale to też jest dużo pracy. Naprawdę, jedynym prostym, idealnym rozwiązaniem jest to, czy / kiedy zostanie zaimplementowane w samym SVN. Istnieje długotrwały problem dotyczący tego w narzędziu do śledzenia problemów Subversion, SVN-2858 , na wypadek gdyby miało się to zmienić w przyszłości.