Subversion не имеет встроенной функции «не фиксировать» / «игнорировать при фиксации», по состоянию на февраль 2016 г. / версия 1.9. Этот ответ - неидеальный обход командной строки
Как указывает OP, TortoiseSVN имеет встроенный список изменений «ignore-on-commit», который автоматически исключается из коммитов. У клиента командной строки этого нет, поэтому вам нужно использовать несколько списков изменений, чтобы выполнить то же поведение (с оговорками) :
- один для работы, которую вы хотите совершить [работа]
- один для вещей, которые вы хотите игнорировать [ignore-on-commit]
Поскольку у TortoiseSVN есть прецедент, я использую «ignore-on-commit» в моих примерах для файлов, которые я не хочу фиксировать. Я буду использовать «работу» для файлов, которые я делаю, но вы можете выбрать любое имя, которое захотите.
Сначала добавьте все файлы в список изменений с именем «работа». Это должно быть запущено из корня вашей рабочей копии:
svn cl work . -R
Это добавит все файлы в рабочей копии рекурсивно в список изменений с именем "work". В этом есть недостаток - поскольку новые файлы добавляются в рабочую копию, вам нужно будет специально добавлять новые файлы, иначе они не будут включены. Во-вторых, если вам придется запустить это снова, вам нужно будет снова добавить все ваши файлы «ignore-on-commit». Не идеально - вы можете начать поддерживать свой собственный список игнорирования в файле, как это сделали другие.
Затем для файлов, которые вы хотите исключить:
svn cl ignore-on-commit path\to\file-to-ignore
Поскольку файлы могут быть только в одном списке изменений, запуск этого дополнения после предыдущего «рабочего» добавления приведет к удалению файла, который вы хотите игнорировать, из списка «рабочих» изменений и внесению его в список изменений «ignore-on-commit».
Когда вы будете готовы зафиксировать ваши измененные файлы, которые вы хотите зафиксировать, вы просто добавите «--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 , на случай, если это изменится в будущем.