为什么 SVN 在签入时合并更改而不是替换?
Why SVN merges changes on checkin instead of replacing?
我刚刚被告知,如果我在文件中进行更改然后签入(我使用 Visual Studio + Ankh),那么更改将被有效地合并。我一直认为无论我入住什么 - 它都是终极的。我确信我签入的文件将被全部替换,使源 100% 保持最新。没有篡改..
现在我听说 svn 实际上会在存储库中合并文件。这是正确的吗?
如果是 - 其他源代码控制系统在这方面做了什么? Git,MS TFS?
你被告知错了。合并发生在您的工作副本中,而不是在提交期间。几乎所有版本控制系统都是这样做的:合并发生在开发人员的工作区,提交的更改正是开发人员工作区中的内容。
想象一个场景,您和您的同事检出同一个文件。您的同事在程序的第 90 行中初始化了一个计数器变量,并在第 91 行和第 110 行之间进行了一些计数。在第 200 行附近的某处,您的同事使用了存储在此变量中的计数。同时,您决定在第 150 行和第 175 行中使用相同的计数器变量。
合并发生时,不会有任何冲突。您换的线路与您的同事不同。但是,你可以看到即使没有行冲突..也有逻辑冲突
这就是必须在工作副本中进行合并的原因。由拥有该工作副本的开发人员来验证合并没有问题。毕竟,当该开发人员在他们的工作副本中进行合并时,他们的名字将在他们提交时出现在该更改上。
yeah i know that.. my boss was convinced otherwise :)
证明:经理知道的越少,他们赚的钱就越多
根据物理学:
Power = Work / Time
据你的老板说:
Time = Money
所以我们替换
Power = Work / Money
根据马基维利的说法:
Knowledge = Power
所以我们再次替换:
Knowledge = Work / Money
我们可以重申这一点来解决金钱问题:
Money = Work / Knowledge
随着 Knowledge
接近零,无论 Work
的数量如何,Money
都会增加。
我刚刚被告知,如果我在文件中进行更改然后签入(我使用 Visual Studio + Ankh),那么更改将被有效地合并。我一直认为无论我入住什么 - 它都是终极的。我确信我签入的文件将被全部替换,使源 100% 保持最新。没有篡改..
现在我听说 svn 实际上会在存储库中合并文件。这是正确的吗?
如果是 - 其他源代码控制系统在这方面做了什么? Git,MS TFS?
你被告知错了。合并发生在您的工作副本中,而不是在提交期间。几乎所有版本控制系统都是这样做的:合并发生在开发人员的工作区,提交的更改正是开发人员工作区中的内容。
想象一个场景,您和您的同事检出同一个文件。您的同事在程序的第 90 行中初始化了一个计数器变量,并在第 91 行和第 110 行之间进行了一些计数。在第 200 行附近的某处,您的同事使用了存储在此变量中的计数。同时,您决定在第 150 行和第 175 行中使用相同的计数器变量。
合并发生时,不会有任何冲突。您换的线路与您的同事不同。但是,你可以看到即使没有行冲突..也有逻辑冲突
这就是必须在工作副本中进行合并的原因。由拥有该工作副本的开发人员来验证合并没有问题。毕竟,当该开发人员在他们的工作副本中进行合并时,他们的名字将在他们提交时出现在该更改上。
yeah i know that.. my boss was convinced otherwise :)
证明:经理知道的越少,他们赚的钱就越多
根据物理学:
Power = Work / Time
据你的老板说:
Time = Money
所以我们替换
Power = Work / Money
根据马基维利的说法:
Knowledge = Power
所以我们再次替换:
Knowledge = Work / Money
我们可以重申这一点来解决金钱问题:
Money = Work / Knowledge
随着 Knowledge
接近零,无论 Work
的数量如何,Money
都会增加。