Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2008 Mercurial:维护VisualStudio2005和2008分支_Visual Studio 2008_Visual Studio 2005_Mercurial_Tortoisehg - Fatal编程技术网

Visual studio 2008 Mercurial:维护VisualStudio2005和2008分支

Visual studio 2008 Mercurial:维护VisualStudio2005和2008分支,visual-studio-2008,visual-studio-2005,mercurial,tortoisehg,Visual Studio 2008,Visual Studio 2005,Mercurial,Tortoisehg,我正在尝试开发一个工作流,它允许我们分别维护库的VisualStudio2005和2008版本,同时确保对一个分支的更改总是复制到另一个分支中 目前,我建议只对默认(VS2005)分支进行更改,然后在完成后合并到VS2008分支中。不幸的是,这依赖于纪律,而不仅仅是在发现问题时以及在关键时刻解决问题,这可能会很困难。这导致我不得不在以后尝试将一个分支中的更改改装回默认值 我知道我们可以将VS2005和VS2008项目之间的更改存储在修补程序队列中,但我是团队中唯一一个习惯使用命令行的人,我的同事

我正在尝试开发一个工作流,它允许我们分别维护库的VisualStudio2005和2008版本,同时确保对一个分支的更改总是复制到另一个分支中

目前,我建议只对默认(VS2005)分支进行更改,然后在完成后合并到VS2008分支中。不幸的是,这依赖于纪律,而不仅仅是在发现问题时以及在关键时刻解决问题,这可能会很困难。这导致我不得不在以后尝试将一个分支中的更改改装回默认值

我知道我们可以将VS2005和VS2008项目之间的更改存储在修补程序队列中,但我是团队中唯一一个习惯使用命令行的人,我的同事更喜欢通过Tortoise HG来完成所有事情

因此,我依靠事后解决问题。我当前的过程涉及为VS2008分支中的每个变更集导出修补程序,并将其应用于默认分支。这很费时,但比尝试将VS2008分支的提示与默认提示合并,然后手动转换回VS2005更不容易出错

读过之后,我尝试备份“升级”更改集,但最终的备份更改集始终作为VS2008分支的新尖端,而且我无法再将更改合并回去,因为最终的合并将在VS2008分支中结束,即使我尝试在提交时显式关闭分支

我已经尝试了很多方法,但最后总是得到一个新的VS2008分支提示,无法将更改合并回默认分支。因此,我开始意识到我错过了一些明显的东西

那么,归根结底,当您试图维护库的两个版本时,其他人认为什么是最佳实践,而这两个版本之间的唯一区别是嵌入到项目和解决方案文件中的Visual Studio版本号

编辑:我试图避免的问题是,如果将VS2005项目添加到VS2008解决方案中(为了便于调试),它会自动将VS2005项目“升级”到VS2008,从而导致“更改”工作副本和大量不必要的“转换”文件。因此,我宁愿将分支分开,并要求用户在克隆后的第一次更新中选择所需的版本,而不是让人们尝试将其“升级”到主线


进一步编辑,使用解决方案

经过更多的努力,我找到了一种方法,可以让这个工作流程与标准的陆龟工具一起工作,而命令行干预只需要进行设置

首先,我更新回项目从VS2005转换到VS2008的变更集。我备份了那个版本,创建了一个备份补丁,并剥离了备份的变更集(因为它在默认分支中)。然后,我将回退补丁应用于转换变更集(使用:hgpatch--no-commit补丁),然后使用新的“VS2005”分支名称提交补丁。然后,我合并到(未命名)VS2005分支的顶端

下一步是更新到(未命名的)VS2008分支的旧提示,进行无关紧要的更改,并将其作为新的“VS2008”分支提交。然后,我合并了VS2005提示中的更改,但是当我提交时,不允许提交对csproj文件的更改。然后,我在提交后还原了这些文件

最后,我更新了VS2005提示并合并到VS2008提示中

这导致了两个提示,它们的代码都相同,但由于VS2005到VS2008的转换而产生的差异除外

新工作流程:

  • 根据需要在VS2005或VS2008分支机构工作
  • 在一个分支中完成更新后,更新到另一个分支,合并中修改的分支中的更改并提交到它自己的分支。然后更新回您首选的分支
  • 如果更新同时发生在两个分支中,则分别执行两个分支,即,。更新到VS2005提示并合并到VS2008提示中,然后更新到VS2008提示并合并到上一个(预合并)VS2005提示中

我们使用单独的解决方案和项目文件。我们复制.sln和.csproj/.vcproj/.vbproj,并在记事本中编辑它们以使用新文件。在添加类时,您仍然必须记住向其他解决方案添加文件,否则您就不必记住复制修复程序。

这本书介绍了如何使用Mercurial修补程序队列来维护旧Linux内核的后台端口。我认为这个问题可以帮你解决。

你可以试着让它消失,而不是解决问题:试试

Premake是预构建系统(顾名思义,它旨在运行pre-make或pre-MSBuild,如果您愿意的话)。在构建于之上的声明性内部DSL中描述项目一次,premake可以自动生成VS2008、2005、2003和2002、MonoDevelop、SharpDevelop、Code::Blocks、CodeLite或Unix、Cygwin或MinGW的GNU Makefile的解决方案和项目。目前支持构建C++、C和C类项目,包括32/64位交叉编译、OSX通用二进制、PlayStation 3和Xbox 360。 配置语言为。但是,作为Lua之上的内部DSL,您还可以随时使用一种功能强大、美观、富有表现力(最重要的是图灵完整)的脚本语言。配置语言的结构和术语都直接基于VisualStudio:它讨论的是,和

premake工具本身是一个包含Lua解释器、Lua标准库,当然还有premake脚本本身的工具。它完全没有外部依赖关系,不写配置文件,也不写甚至只是读取注册表

你需要做的就是