2010-10-30 2 views
1

Если проект имеет несколько человек, скажем, A, B, C, работающих вместе, и все они редактируют один и тот же исходный файл.Какой контроль версий?

Спустя несколько месяцев они понимают, что то, что делал A, является неправильным, и они хотят откатить файл таким образом, что удаляются только части/функции/линии/..., которые «коснулись», и работа B и C все еще находится в откатном варианте. Другими словами, версия отката имеет только работу B и C вплоть до времени, когда они решают удалить работу A.

Есть ли какая-либо версия/исходное программное обеспечение для управления там (бесплатная/коммерческая) может это сделать?

Спасибо.

ответ

1

Git и немного скриптов сделают это. Вероятно, немного руки тоже работают, но вы можете использовать коммиты, используя интерактивную перезагрузку.

+2

немного скриптов? не следует ли 'git revert ' быть достаточно? – knittl

+0

Да, и вам нужна хотя бы одна команда, чтобы найти все фиксации кем-то конкретным. Это уже скриптинг. –

0

Я использую TFS и Git. Но есть много бесплатных и открытых версий программного обеспечения для контроля версий. Вы можете найти все программное обеспечение для управления версиями here.

1

Большинство VCS должны быть в состоянии сделать это - это обратное слияние. В Subversion вы должны определить изменения, сделанные A, и объединить их снова, но наоборот. Для упрощения это означает добавление линий линии в удаление линии и наоборот.

# Don't want revision 37 because A made it. 
$ svn merge -r 37:36 path 

http://svnbook.red-bean.com/en/1.5/svn.branchmerge.basicmerging.html#svn.branchmerge.basicmerging.undo

0

В Git, вы, вероятно, сделать что-то вроде

git revert `git rev-list --author=A` 

[Примечание:. Совершенно непроверенным]

0

Держу пари, он может (легко) быть сделано с Monotone используя команду `mtn local kill_certs select cert certname [certval] '(см. reference), которая:

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

Таким образом, при использовании сертификата A вышеуказанная команда устранит выполненную им «неправильную работу».

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