支持完全手动更新或合并的源代码控制服务器或客户端
Source control server or client that supports fully manual update or merge
我们正在开发一个大型 c# 项目,该项目最初在 tfs 源代码控制下,后来移至 git,最终由于各种原因在 svn 源代码控制下结束。
此应用程序的更新通常需要跨多个复杂的 c#、js 和 cshtml 文件进行更改,因此经常会发生不同的任务最终更改相同的页面和代码段,但针对完全不同的问题,因此我们经常发生多个并发的、非冲突的、条件更改和相同函数的其他代码流部分。
我们的问题是,我们使用的每个源代码控制系统在更新后最终都会弄乱我们的文件,因此我们希望找到一个源代码控制系统或一个客户端,允许对所有源代码进行实际手动更新文件。我们花了太多时间来确保更新是正确的,所以我们宁愿手动更新以确保一切都井井有条。
我们的意思是,由于更改的性质,仅举出我们遇到的两个最简单的问题,一些下拉列表被分配了一个值,该值被来自不同编码器的另一个更新覆盖,后来被覆盖,或者同一个隐藏输入框有多个赋值。显然这不是更新工具的错,但这正是我们工作性质造成的。
唯一 "works" 是在实际更新/拉取之前手动检查每个文件中的差异(使用存储库检查),在我们的本地版本中手动编辑更改,因此 "tricking"更新工具进入 -not- 更新,但这是耗时的。
关于实际冲突,我们使用了 tortoisesvn 自动使整个文件无效的能力,因此对于这些文件比较和冲突解决是有意手动进行的,并允许我们根据自己的喜好对问题进行排序。
所以我们恳请问:有人知道允许在更新/拉取/获取期间实际手动更新所有文件的源代码控制客户端或服务器吗?
我们想象的是类似于任何冲突解决工具的东西,但适用于更新。
基本上我们不希望更新悄无声息地改变我们的代码,但我们希望看到每一次更新都会发生以决定 'take left or take right' 并避免追踪某些东西停止工作的原因的痛苦工作。
谢谢
internal:forcedump
mergetool 在 Mercurial 中会执行请求的技巧,但无论如何这是一条错误的道路,通往无处的道路。
您可以使用 git merge --no-commit
合并另一个分支而不提交它,这样您就可以检查更改,然后提交您想要的更改。我认为没有任何 Git 托管工具允许这样做,因此您需要在命令行执行每个手动合并。
但是,正如其他人所提到的,这不是解决您的问题的好方法。虽然 Git 支持这一点,但这会很痛苦,而且这不是 any 版本控制系统的预期用途。最好弄清楚到底是什么问题,再想办法解决。
例如,如果您发现项目列表和这些项目的计数不同步,那么您可能决定计算计数而不是在代码中显式写入。
如果您发现有多个项目使用相同的常量值,您可以将这些值仅保存在一个按值排序的列表中,这样 Git 如果两个独立的更新共享相同的值就会发生冲突。然后,开发人员可以查看整个更改并确定需要更新哪些内容作为解决冲突的一部分。
这类问题在开发中确实很少发生,但通常可以使用众所周知的技术来解决,以帮助工具在可能的情况下失败,并使用自动化测试来使细微的破损变得明显。我强烈推荐这种方法,而不是试图对工具进行微观管理。
我们正在开发一个大型 c# 项目,该项目最初在 tfs 源代码控制下,后来移至 git,最终由于各种原因在 svn 源代码控制下结束。
此应用程序的更新通常需要跨多个复杂的 c#、js 和 cshtml 文件进行更改,因此经常会发生不同的任务最终更改相同的页面和代码段,但针对完全不同的问题,因此我们经常发生多个并发的、非冲突的、条件更改和相同函数的其他代码流部分。
我们的问题是,我们使用的每个源代码控制系统在更新后最终都会弄乱我们的文件,因此我们希望找到一个源代码控制系统或一个客户端,允许对所有源代码进行实际手动更新文件。我们花了太多时间来确保更新是正确的,所以我们宁愿手动更新以确保一切都井井有条。 我们的意思是,由于更改的性质,仅举出我们遇到的两个最简单的问题,一些下拉列表被分配了一个值,该值被来自不同编码器的另一个更新覆盖,后来被覆盖,或者同一个隐藏输入框有多个赋值。显然这不是更新工具的错,但这正是我们工作性质造成的。
唯一 "works" 是在实际更新/拉取之前手动检查每个文件中的差异(使用存储库检查),在我们的本地版本中手动编辑更改,因此 "tricking"更新工具进入 -not- 更新,但这是耗时的。
关于实际冲突,我们使用了 tortoisesvn 自动使整个文件无效的能力,因此对于这些文件比较和冲突解决是有意手动进行的,并允许我们根据自己的喜好对问题进行排序。
所以我们恳请问:有人知道允许在更新/拉取/获取期间实际手动更新所有文件的源代码控制客户端或服务器吗?
我们想象的是类似于任何冲突解决工具的东西,但适用于更新。 基本上我们不希望更新悄无声息地改变我们的代码,但我们希望看到每一次更新都会发生以决定 'take left or take right' 并避免追踪某些东西停止工作的原因的痛苦工作。
谢谢
internal:forcedump
mergetool 在 Mercurial 中会执行请求的技巧,但无论如何这是一条错误的道路,通往无处的道路。
您可以使用 git merge --no-commit
合并另一个分支而不提交它,这样您就可以检查更改,然后提交您想要的更改。我认为没有任何 Git 托管工具允许这样做,因此您需要在命令行执行每个手动合并。
但是,正如其他人所提到的,这不是解决您的问题的好方法。虽然 Git 支持这一点,但这会很痛苦,而且这不是 any 版本控制系统的预期用途。最好弄清楚到底是什么问题,再想办法解决。
例如,如果您发现项目列表和这些项目的计数不同步,那么您可能决定计算计数而不是在代码中显式写入。
如果您发现有多个项目使用相同的常量值,您可以将这些值仅保存在一个按值排序的列表中,这样 Git 如果两个独立的更新共享相同的值就会发生冲突。然后,开发人员可以查看整个更改并确定需要更新哪些内容作为解决冲突的一部分。
这类问题在开发中确实很少发生,但通常可以使用众所周知的技术来解决,以帮助工具在可能的情况下失败,并使用自动化测试来使细微的破损变得明显。我强烈推荐这种方法,而不是试图对工具进行微观管理。