版本控制
首先,对不起,因为我的英文和解释不好。这是收到一些评论后我的问题的编辑版本,我知道是什么让你感到困惑。版本控制
我正在进行的项目大约有10人,每个人都会在项目中实施一些“工作”。
- 我们每股20个模型文件(文本文件)
- 当人们做“工作”,他们直接去到20的文本部分线路模型文件,并添加/删除/修改上述文件。
假设:
-
A
实施工作没有。 1,4,6和10. -
B
实施的工作号码。 2,3,7,和9 - ...
A
实现(4)实施B
前(7)。 在文件X中,由(4)改变的一些值/行被(7)覆盖。
后来当我们运行节能评估,发现(4)实际上根本不节能,所以我们决定拿(4)出来。所以问题是如果我们有任何版本控制,可以采取(4)(由A
实现),而不触及由(7)(由B
实现)覆盖的值/行。
换句话说,我想删除A为工作号(4)所做的所有更改。由A完成的工作1,6,10仍在模型文件中。
现在我们正在使用RCS ...但我不知道RCS是否可以做到这一点,以及如何?
我在考虑GIT和SVN。我认为SVN更合适,因为项目中的所有数据放在1个地方(1个文件夹)。我们的服务器是Linux Red Hat。
如果您遇到此问题,请分享。
对不起,谢谢你的时间。
对于配置,它是更好的版本:只有变量
- 一个模板配置文件,它
- 单独每个模块值
- 能够识别哪个模块正在运行,来代替脚本在模板文件中的变量的实际值
这样:
- 实际配置文件(带有模块使用的值的文件)永远不会进行版本控制(但总是生成)。
- 它与任何模块组织/依赖(因为,像Jon提到在评论),它是不完全清楚,如果你在几个有几个模块修改的共同文件,或同一组文件(模块)的交易版本。
如果你没有办法产生并发修改,然后branches are the right solution这些文件,这就是为什么SVN或任何DVCS(混帐,水银,...)
这将对合并的开销报告你从一个分支到另一个分支的一些修改。
你想要的那种选择性合并是一个“负合并”(一个在那里你扭转一些变化,而不是别人:也叫subtractive merge)没有问题通过"rebase --interactive
"
Git的处理是,在那里你重放提交(你甚至可以修改/改变其中一个提交的提交)。
您也将有一个git revert的选择,如果你不希望改写历史的过去的提交。
我不知道RCS将如何处理,除非你手动比较当前的版本与A
,以消除右线完成以前的版本做一个新的修订。
是这样的:
- 你有代码的稳定版本干线
- 你有一个问题 - >你从主干创建一个分支
- 在您解决问题时,您将更改从主干更新为您的分支,以尽可能接近稳定版本 - >这种方式您会立即注意到稳定性的变化与您的代码无关;)
- 一旦问题被修复/测试(!),你就会合并分支到主干
注:
- 如果有更多的开发商正在改变相同的代码行,就会有冲突 - >发生这种情况,并且必须手动处理
- 回复提交的也可以
要删除与SVN版本(我认为这将是与GIT类似的东西),您使用以下命令行上你的工作副本:
svn merge -c -4 .
这会消极地将版本4的更改应用于您的工作副本。之后,您可以检查更改并将其提交回存储库。
让我确保我理解正确。你有一段代码(4)创建一个文件,另一个(7)修改该文件,并希望恢复4?或者你有一段代码(4)修改前面的模块(0),然后7还修改了0,但因为后来修改了4呢? – Jon 2011-01-29 08:20:26
我们正在共享模型文件。因此,举例来说,我有文件X的模型现在,(4)在十一个星期(4)完成后,改变一些值,(7)改变了相同的值(4)改变。 – user397232 2011-01-29 08:44:03