SVN: Как игнорировать модифицированный файл при коммите? - PullRequest
14 голосов
/ 27 декабря 2011

Я отредактировал некоторые файлы в SVN, например:

$svn st
M  a
M  b
...

Теперь я хочу зафиксировать свои изменения в SVN, по какой-то причине я не хочу фиксировать файл b, этоЕсть ли быстрый способ или команда, чтобы игнорировать измененный файл b?


Наконец, я использую @yzucker Solution 1, cp, revert и commit.Changelists слишком тяжелый, спасибо всем.

Ответы [ 5 ]

16 голосов
/ 27 декабря 2011

Вы можете использовать функцию Список изменений новых клиентов Subverion, как показано в этом коротком примере сеанса:

$ svn st
M       a
M       b

$ svn cl task1 a
$ svn cl task2 b

$ svn st
--- Changelist 'task1':
M       a
--- Changelist 'task2':
M       b

$ svn ci --cl task1 -m "checking in only task 1 stuff"
Sending        a
Committed revision 11.
8 голосов
/ 27 декабря 2011

Увы, фиксация многих файлов с некоторыми назойливыми изменениями игнорируется проблемой.

Решение 1: копирование, восстановление и фиксация

$cp b /tmp/
$svn revert b
$svn commit -m 'commit message'
$mv /tmp/b ./

Решение 2: копирование, фиксация, реверсирование эффектаb, повторить b

$cp b /tmp/
$svn commit -m 'commit message'
$svn merge -c -{new revision} b
$svn commit b -m 'revert message for b'
$cp /tmp/b ./b

Второй подход менее предпочтителен, поскольку вы вводите неработающий код в SVN.

4 голосов
/ 27 декабря 2011

Не думаю, что есть возможность исключить только один файл и включить все остальные, которые были изменены.В вашем примере вы можете включить только те файлы, которые хотите зафиксировать, по

svn co a -m "Only commit a"

, что затем исключит b.См. документацию команды с примерами в конце.

Другой вариант может состоять в использовании списков изменений , но это более тяжело ...

3 голосов
/ 27 декабря 2011

Если файл b уже добавлен в репозиторий, его уже нельзя игнорировать. Вы должны удалить этот файл, зафиксировать, воссоздать и установить свойство ignore следующим образом:

svn propset svn:ignore b .

Последняя точка означает текущую папку.

Если вы хотите игнорировать файлы только в этом коммите, введите их имена явно в команде фиксации

svn co a c d

Где a, c, d - файлы, которые вы хотите зафиксировать.

2 голосов
/ 27 декабря 2011

В Windows вы можете использовать клиент GUI TortoiseSVN и просто выбрать только необходимые флажки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...