2009-03-12 7 views
4

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

ответ

10

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

6

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

+0

+1, поскольку я не знал об этой функции, но на самом деле они называются «списками изменений» в подрывной деятельности. – richq

+0

ах, дерьмо ... Я знал, что должен был проконсультироваться с документами вместо записи из памяти, но я ленился. Сожалею. – rmeador

+0

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

0

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

+1

И как вы это делаете? – PythonNut

7

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

СВЕН -m совершить «Мой коммит» Папка/file1.c

1

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

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

0

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

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

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

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

Смежные вопросы