版本控制

版本控制

问题描述:

首先,对不起,因为我的英文和解释不好。这是收到一些评论后我的问题的编辑版本,我知道是什么让你感到困惑。版本控制

我正在进行的项目大约有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。

如果您遇到此问题,请分享。

对不起,谢谢你的时间。

+0

让我确保我理解正确。你有一段代码(4)创建一个文件,另一个(7)修改该文件,并希望恢复4?或者你有一段代码(4)修改前面的模块(0),然后7还修改了0,但因为后来修改了4呢? – Jon 2011-01-29 08:20:26

+0

我们正在共享模型文件。因此,举例来说,我有文件X的模型现在,(4)在十一个星期(4)完成后,改变一些值,(7)改变了相同的值(4)改变。 – user397232 2011-01-29 08:44:03

对于配置,它是更好的版本:只有变量

  • 一个模板配置文件,它
  • 单独每个模块值
  • 能够识别哪个模块正在运行,来代替脚本在模板文件中的变量的实际值

这样:

  • 实际配置文件(带有模块使用的值的文件)永远不会进行版本控制(但总是生成)。
  • 它与任何模块组织/依赖(因为,像Jon提到在评论),它是不完全清楚,如果你在几个有几个模块修改的共同文件,或同一组文件(模块)的交易版本。

如果你没有办法产生并发修改,然后branches are the right solution这些文件,这就是为什么SVN或任何DVCS(混帐,水银,...)
这将对合并的开销报告你从一个分支到另一个分支的一些修改。


你想要的那种选择性合并是一个“负合并”(一个在那里你扭转一些变化,而不是别人:也叫subtractive merge)没有问题通过"rebase --interactive"

Git的处理是,在那里你重放提交(你甚至可以修改/改变其中一个提交的提交)。
您也将有一个git revert的选择,如果你不希望改写历史的过去的提交。

我不知道RCS将如何处理,除非你手动比较当前的版本与A,以消除右线完成以前的版本做一个新的修订。

一般使用版本控制时的做法

是这样的:

  • 你有代码的稳定版本干线
  • 你有一个问题 - >你从主干创建一个分支
  • 在您解决问题时,您将更改从主干更新为您的分支,以尽可能接近稳定版本 - >这种方式您会立即注意到稳定性的变化与您的代码无关;)
  • 一旦问题被修复/测试(!),你就会合并分支到主干

注:

  • 如果有更多的开发商正在改变相同的代码行,就会有冲突 - >发生这种情况,并且必须手动处理
  • 回复提交的也可以

要删除与SVN版本(我认为这将是与GIT类似的东西),您使用以下命令行上你的工作副本:

svn merge -c -4 . 

这会消极地将版本4的更改应用于您的工作副本。之后,您可以检查更改并将其提交回存储库。