Version control 版本控制

Version control 版本控制,version-control,Version Control,首先,很抱歉,因为我的英语和解释很差。这是在收到一些评论后我的问题的编辑版本,我意识到是什么让你感到困惑 我正在从事的项目大约有10个人,每个人都将在项目中执行一些“工作” 我们共享20个模型文件(文本文件) 当人们进行“工作”时,他们必须直接进入模型文件,并在上面的20个文本文件中添加/删除/编辑一些行 假设: A实施了第1、4、6和10项工作 B实施了第2、3、7和9项工作 A实施(4)在B实施(7)之前。 在文件X中,由(4)更改的某些值/行被(7)覆盖 稍后,当我们运行节能评估

首先,很抱歉,因为我的英语和解释很差。这是在收到一些评论后我的问题的编辑版本,我意识到是什么让你感到困惑

我正在从事的项目大约有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更合适,因为项目中的所有数据都放在一个地方(一个文件夹)。我们的服务器是Linux Red Hat

如果你有过这样的经历,请分享


再次表示歉意并感谢您的时间。

对于配置,最好使用以下版本:

  • 模板配置文件中仅包含变量
  • 每个模块分别设置值
  • 一个脚本,能够识别哪个模块正在运行,并用实际值替换模板文件中的变量
这样:

  • 实际配置文件(包含模块使用的值的文件)从未进行版本控制(但始终生成)
  • 它处理任何模块组织/依赖关系(因为,就像评论中提到的那样),不清楚您是否有一个由多个模块修改的公共文件,或者在多个版本中有一组相同的文件(模块)

如果您无法生成那些同时修改的文件,那么,这就是为什么SVN或任何DVC(Git、Mercurial,…)
这将增加合并的开销,以报告从一个分支到另一个分支的一些修改


您需要的选择性合并类型是“负合并”(在其中您可以反转一些更改,而不是其他更改:也称为“负合并”)

Git通过重播提交(您甚至可以修改/更改其中一个重播的提交)来毫无问题地处理该问题。
如果不想重写过去提交的历史记录,您还可以选择a


我不知道RCS会如何处理这个问题,除非您通过手动比较当前版本与
a
以前的版本来进行新的修订,以便删除正确的行。

通常,使用版本控制时的方法是:

  • 您有一个具有稳定版本代码的主干
  • 您有一个问题->您从主干创建了一个分支
  • 在修复问题时,您将更新从主干到分支的更改,以尽可能接近稳定版本->这样您会立即注意到稳定版本中的更改不适用于您的代码;)
  • 一旦问题得到修复/测试(!),就可以将分支合并到主干
注:

  • 如果有更多的开发人员正在更改同一行代码,就会出现冲突->这种情况会发生,必须手动处理
  • 也可以恢复提交

要删除带有SVN的版本(我假设与git类似),可以在工作副本上使用以下命令行:

svn merge -c -4 .

这将对您的工作副本产生负面影响。之后,您可以检查更改并将其提交回存储库。

请确保我理解正确。您有一段代码(4)用于创建文件,另一段代码(7)用于修改该文件,是否要还原4?或者您是否有一段代码(4)修改了早期的模块(0),然后7也修改了0,但因为它是后来出现的,所以也修改了4?我们正在共享模型文件。例如,我在文件X中有一个模型。现在,(4)在X中更改了一些值。(4)完成后一周,(7)更改了与(4)更改相同的值。感谢您的评论,但配置只是一个示例。更确切地说,模型文件是我们现在共享的,我们没有办法将它们分开。所以团队中的所有成员都在不断编辑它们。@user397232:您没有办法生成这些模型文件,而不是对它们进行版本控制吗?@user397232:那么分支就是解决方法:我已经完成了我的回答。谢谢VonC。读了你的答案后,我意识到我的问题有多含糊,我对它进行了编辑。对不起。如果您能重新阅读我的问题并告诉我您的想法,我将不胜感激。@user397232:好的,我已经完成了我的回答,并提供了有关恢复某些选择性更改的附加信息。