开发者

Which Version control?

开发者 https://www.devze.com 2023-01-23 06:31 出处:网络
If a project has multiple people, say, A,B,C working together and they all edit a same source file. Couple months later, they realize that what A has been doing is wrong and they want to roll back t

If a project has multiple people, say, A,B,C working together and they all edit a same source file.

Couple months later, they realize that what A has been doing is wrong and they want to roll back the file in such a way that only parts/functions/lines/... that A "touched" are removed and the work B and C did is still in the roll back version. I开发者_JS百科n other words, the roll back version has only the work of B and C up to the time they decide to remove A's work.

Is there any version/source control software out there (free/commercial) can do that?

Thanks.


Git and a bit of scripting will do that. Probably a bit of hand work too, but you can resort commits using interactive rebase.


Most VCSs should be able to do this -- it's a reverse merge. In Subversion you would identify the revisions made by A and merge them in again, but the other way round. To oversimplify, this means turning line additions into line removals, and vice versa.

# 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


I use TFS and Git. But, there are a lot of free and open source version control softwares. You can find all the source control softwares here.


In Git, you would probably do something like

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

[Note: completely untested.]


I bet it can (easily) be done with Monotone by using `mtn local kill_certs selector certname [certval]' command (see reference) which:

This command deletes certs with the given name on revisions that match the given selector. If a value is given, it restricts itself to only delete certs that also have that same value. Like kill_revision, it is a very dangerous command; it permanently and irrevocably deletes historical information from your database.

So, by using A's certificate, the above command will eliminate 'wrong work' done by him.

0

精彩评论

暂无评论...
验证码 换一张
取 消