Subversion не має вбудованої функції "не виконувати" / "ігнорувати при здійсненні" станом на лютий 2016 року / версія 1.9. Ця відповідь є неідеальним вирішенням командного рядка
Як зазначається в ОП, TortoiseSVN має вбудований список змін, "ігнорувати-на-виконувати", який автоматично виключається з комітетів. У клієнта командного рядка цього немає, тому вам потрібно скористатися декількома списками змін, щоб виконати таку саму поведінку (із застереженнями) :
- один для роботи, яку ви хочете зробити [робота]
- один для речей, які ви хочете ігнорувати [ignore-on-počin]
Оскільки у TortoiseSVN є прецедент, у своїх прикладах я використовую "ignore-on-commit" для файлів, які я не хочу робити. Я буду використовувати "роботу" для файлів, які я роблю, але ви можете вибрати будь-яке ім'я.
Спочатку додайте всі файли до списку змін під назвою "робота". Це потрібно виконати з кореня вашої робочої копії:
svn cl work . -R
Це додасть усі файли в робочій копії рекурсивно до списку змін під назвою "робота". У цьому є недолік - оскільки нові файли додаються до робочої копії, вам потрібно буде спеціально додати нові файли, інакше вони не будуть включені. По-друге, якщо вам доведеться запустити це ще раз, вам потрібно буде знову додати всі свої файли "ігнорувати-на-фіксувати" знову. Не ідеально - ви можете почати вести власний список "ігнорувати" у файлі, як це робили інші.
Потім для файлів, які потрібно виключити:
svn cl ignore-on-commit path\to\file-to-ignore
Оскільки файли можуть бути лише в одному списку змін, запустивши це додаток після попереднього додавання "робота", вилучіть файл, який ви хочете проігнорувати, зі списку змін "робота" та помістіть його у список змін "ігнорувати-здійснити".
Коли ви готові ввести свої змінені файли, які ви хочете ввести, ви просто додасте "--cl work" до вашої комісії:
svn commit --cl work -m "message"
Ось як виглядає простий приклад на моїй машині:
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.
Альтернативою було б просто додати кожен файл, який ви хочете скористатись, до списку змін "робота", і навіть не підтримувати список ігнорів, але це теж велика робота. Дійсно, єдине просте, ідеальне рішення - це якщо / коли це реалізується в самому SVN. Про це існує давнє питання в трекері випуску Subversion, SVN-2858 , якщо це зміниться в майбутньому.