Git 支持完全手动更新或合并的源代码管理服务器或客户端

Git 支持完全手动更新或合并的源代码管理服务器或客户端,git,svn,tfs,merge,Git,Svn,Tfs,Merge,我们正在进行一个大型c#项目,该项目最初由tfs源代码管理,后来被转移到git,出于各种原因,最终以svn源代码管理结束 此应用程序的更新通常需要跨多个复杂的c#、js和cshtml文件进行更改,因此不同的任务经常会更改相同的页面和代码段,但问题完全不同,因此我们经常会出现多个并发的、不冲突的,对相同函数的条件和其他代码流部分的更改 我们的问题是,我们使用的每一个源代码管理系统在更新后都会弄乱我们的文件,所以我们希望找到一个源代码管理系统或一个客户端,允许实际手动更新所有文件。我们花了太多时间确

我们正在进行一个大型c#项目,该项目最初由tfs源代码管理,后来被转移到git,出于各种原因,最终以svn源代码管理结束

此应用程序的更新通常需要跨多个复杂的c#、js和cshtml文件进行更改,因此不同的任务经常会更改相同的页面和代码段,但问题完全不同,因此我们经常会出现多个并发的、不冲突的,对相同函数的条件和其他代码流部分的更改

我们的问题是,我们使用的每一个源代码管理系统在更新后都会弄乱我们的文件,所以我们希望找到一个源代码管理系统或一个客户端,允许实际手动更新所有文件。我们花了太多时间确保更新是正确的,所以我们宁愿手动更新以确保一切正常。 我们的意思是,由于更改的性质,仅举我们遇到的两个最简单的问题,一些下拉列表会被分配一个值,该值会被来自不同编码器的另一个更新覆盖,或者是对同一个隐藏输入框有多个分配。显然这不是更新工具的错,但这正是由于我们工作的性质所导致的

“有效”的唯一方法是在实际更新/拉取之前手动检查每个文件中的差异(使用存储库检查),在本地版本中手动编辑更改,从而“诱使”更新工具按其条款进行更新,但这很耗时

关于实际冲突,我们使用了OrtoiseSVN自动使整个文件无效的功能,因此对于这些文件,比较和冲突解决是有意手动的,并允许我们按照自己的喜好对问题进行排序

因此,我们善意地问:有谁知道有一个源代码管理客户机或服务器允许在更新/拉取/获取期间实际手动更新所有文件

我们所想象的是类似于任何冲突解决工具的东西,但应用于最新版本。 基本上,我们不希望更新悄悄地改变我们的代码,但我们希望看到将要发生的每一次更新,以决定“向左走还是向右走”,并避免痛苦的工作,即跟踪某些东西停止工作的原因


感谢Mercurial中的

将完成所需的技巧,但无论如何它都是错误的路径,而且不会有结果。

您可以使用git merge--no commit合并另一个分支而不提交它,这样您就可以检查更改,然后提交所需的更改。我不相信有任何Git托管工具可以实现这一点,所以您需要在命令行执行每个手动合并

然而,正如其他人所提到的,这并不是解决问题的好办法。虽然Git支持这一点,但这将是一件痛苦的事情,而且它不是任何版本控制系统的预期用途。最好弄清楚到底发生了什么样的问题,并考虑可能的解决办法

例如,如果您发现项目列表和这些项目的计数不同步,那么您可能会决定计算计数,而不是显式地将其写入代码中

如果您发现有多个项目使用相同的常量值,则可以将这些值仅保留在一个按值排序的列表中,这样,如果两个独立的更新共享相同的值,Git将发生冲突。然后,开发人员可以查看整个更改,并确定作为解决冲突的一部分需要更新的内容


这类问题在开发过程中很少出现,但通常都是使用众所周知的技术来解决的,以帮助工具在可能的情况下失败,再加上使用自动化测试使细微的破坏变得明显。我强烈建议采用这种方法,而不是试图对工具进行微观管理。

无论供应链管理如何,解决问题的方法都是在分支机构中工作。合并分支。当冲突出现时,手动解决冲突。这是一个过程问题,而不是工具问题。我想说的是“功能分支”。。。。还有“拉请求”,“混乱无法自动化”。你的问题不是工具,而是头脑和发展政策中缺少秩序。使用“每个任务分支”工作流(在任何SCM中,顺便说一句,对于密集分支,合并SVN是错误的,即使不是“最差”的选择),检查合并中的更改,回滚错误更改并组织流程。手动合并是一种浪费时间的方式,正如我在原始帖子中所写的,很明显这不是工具的错,每个任务的分支可能会缓解问题,但这些并不能回答问题。谢谢。这是一个开始。在我们看来,不是工作流需要适应工具,而是相反。特别是因为我们在所有其他项目中都使用典型的源代码管理工作流。感谢您的建议。我们知道原始请求中存在的固有问题,但是现在重构或重新设计是不可能的,所以我们希望从软件中得到帮助。这是一个恶性循环?是的,但这总比因为技术问题而不能按时完成要好。