Какая версия контроля? - PullRequest
       6

Какая версия контроля?

1 голос
/ 30 октября 2010

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

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

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

Спасибо.

Ответы [ 5 ]

1 голос
/ 30 октября 2010

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

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

http://svnbook.red -bean.com / о / 1,5 / svn.branchmerge.basicmerging.html # svn.branchmerge.basicmerging.undo

1 голос
/ 30 октября 2010

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

0 голосов
/ 30 октября 2010

Могу поспорить, что (легко) это можно сделать с помощью Monotone с помощью команды `mtn local kill_certs selector certname [certval] '(см. ссылка ), которая:

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

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

0 голосов
/ 30 октября 2010

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

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

[Примечание: полностью не проверено.]

0 голосов
/ 30 октября 2010

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

...