Mercurial / SVN: несколько коммитов из одного набора различий? - PullRequest
2 голосов
/ 12 июля 2010

Допустим, я работаю над проектом с файлами A, B и C. Я на полпути к добавлению функции, изменению A и B, прежде чем я понимаю, что что-то требует очистки. Из-за обстоятельств оптимальным является прерывание работы функции для выполнения очистки. Это включает внесение изменений в A, B и C.

После того, как я закончу с этой функцией, я хочу проверить свой код. Так сказать, есть два разных набора изменений: для добавления функции и для очистки. Они никак не конфликтуют. Можно ли зафиксировать эти изменения отдельно, для чистой истории репо?

В качестве альтернативы, что если я решу проверить очистку, как только я закончу с ней, но не хочу проверять выполненную на полпути функцию в A и B?

Я не уверен, возможно ли это сделать в Mercurial или SVN, но мне интересно узнать об этом. (А как насчет TortoiseHg?)

Ответы [ 2 ]

4 голосов
/ 12 июля 2010

Да, вы можете сделать это с помощью Mercurial's hg record. Это считается расширением, но распространяется с обычным пакетом. По сути, вы запускаете эту команду, и она спрашивает вас о каждом файле (вы хотите что-нибудь зафиксировать здесь?). Если вы говорите «да», он спрашивает вас, хотите ли вы зафиксировать каждый кусок (группу строк). Вы также можете запустить его на определенных файлах. E.g.:

hg record A B C

В этом случае вам не придется спрашивать вас об изменениях в других файлах.

Варианты для каждого блока:

y - record this change
n - skip this change

s - skip remaining changes to this file
f - record remaining changes to this file

d - done, skip remaining changes and files
a - record all changes to all remaining files
q - quit, recording no changes

? - display help

РЕДАКТИРОВАТЬ : TortoiseHg имеет встроенную функцию, называемую Изменить выбор , которая в основном является GUI-эквивалентом record.

1 голос
/ 12 июля 2010

Расширение crecord предоставляет приятный интерфейс curses, который позволяет вам точно выбрать ожидающие изменения, которые вы хотите зафиксировать.

...