Subversion: сценические файлы для фиксации явно? - PullRequest
5 голосов
/ 12 марта 2009

Я очень привык к тому, что git должен касаться каждого файла, который вы хотите зафиксировать, и, в то же время, перепроверять diff. Теперь на работе я должен использовать SVN, и я продолжаю совершать вещи случайно. Есть ли способ заставить subversion вести себя как git, в котором я должен явно указать каждый файл, который должен быть включен в следующий коммит?

Ответы [ 6 ]

11 голосов
/ 12 марта 2009

Альтернативным методом будет использование моста git-svn на работе, если нет причин, почему вы не можете. Никто, кроме вас, не должен знать, что вы на самом деле используете Git. Таким образом, вы получаете все преимущества Git при использовании Subversion.

7 голосов
/ 12 марта 2009

Укажите файлы в командной строке

svn commit -m папка "My commit message" / file1.c

6 голосов
/ 12 марта 2009

Вы можете создать набор изменений, в котором перечислены только те файлы, которые вы хотите зафиксировать, а затем зафиксировать набор изменений. Если вы усердно работаете над удалением наборов изменений, когда закончите с ними, и никогда не делаете коммиты без изменений, я думаю, это сработает для вас. Более простым решением было бы использование графического клиента (такого как TortoiseSVN, но есть другие для всех платформ с аналогичной функциональностью), который показывает вам список файлов, которые будут зафиксированы в то время, когда он запрашивает ваше сообщение для входа. Тогда, если вы нажмете «Подтвердить», не просмотрев их, это не потому, что он не сказал вам, что собирается делать:)

1 голос
/ 14 апреля 2009

Чтобы следовать ответу Рори, если вы хотите применить явное поведение при фиксации файла, вы можете написать пакетный сценарий или скрипт оболочки, который проверит, чтобы убедиться, что у вас есть хотя бы один аргумент, отличный от сообщения фиксации, и вернул ошибку, если вы не сделали этого. «т. Это, по крайней мере, напомнит вам явно указать имена файлов.

Я всегда делаю svn stat и diff перед фиксацией, так что статистика обычно напоминает мне, что могут быть вещи, которые я еще не хотел регистрировать.

0 голосов
/ 09 июля 2011

Subversion работает так, как вы хотите по умолчанию. Добавить элементы, которые добавлены , удалены или изменены , являются поэтапными и не фиксируются, пока вы не используете команду commit, в которой вы указываете файлы, которые хотите зафиксировать , Если вы используете командную строку и просто запускаете «svn commit» без каких-либо других параметров, тогда я вижу, в чем ваша проблема, и в этом случае я бы использовал функцию changeset, предложенную другими, а также использовал время коммитов в качестве собственного кода. -просмотреть время, чтобы взглянуть на все изменения и решить, какие из них входят, а какие нет.

Я бы также добавил, что это плохая привычка - делать только частичные коммиты, и делать это следует только тогда, когда вы очень хорошо понимаете, что делаете, если находитесь в общей ветке, так как это один из самых распространенных способов разбить сборку, чтобы неожиданно взаимосвязанные изменения не были включены в один и тот же коммит.

Что я делаю и рекомендую другим в случае, когда у меня есть изменения, которые я хочу зафиксировать отдельно, - это создать патч или набор патчей для изменений, которые я не заинтересован в фиксации в то время, а затем отменить их те же файлы из моей рабочей копии. Теперь, когда в рабочей копии есть только те изменения, которые я собираюсь зафиксировать, я буду перестраивать и проверять правильность, выполняя ручное тестирование или модульные тесты, и только тогда, когда все эти этапы выполняют самоконтроль и коммит кода. Я думаю, что это самый безопасный способ взаимодействия с большой группой, особенно когда вы делаете сложные изменения. Этот процесс также можно было упростить, поскольку svn поддерживал функцию полок на стороне клиента для внесения изменений во временное хранилище с именем, похожим на набор изменений, с помощью одной команды.

Также, кстати, использование TortoiseSVN значительно упрощает управление наборами изменений и файлами выбора вишни, которые войдут в любой конкретный коммит. Если вы используете Windows, я настоятельно рекомендую проверить это по этой причине.

0 голосов
/ 12 марта 2009

Я обычно фиксирую из какой-то IDE, например, Emacs, где я могу вручную выбрать набор файлов для фиксации.

...