小编Ken*_*ric的帖子

在Mercurial上支持向后合并

如何在没有死亡的情况下扭转合并对极化分支的影响?

这个问题困扰了我好几个月,我终于放弃了.

您有1个存储库,有2个 命名分支.A和B.

A发生的变化将不可避免地发生在B.

B上直接发生的变化绝不会发生在A上.

在这样的配置中,将"B"合并为"A"会在存储库中产生可怕的问题,因为对B的所有更改都出现在A中,就好像它们是在A中制作的一样.

从这种情况中恢复的唯一"正常"方式似乎是"退出"合并,即:

 hg up -r A 
 hg backout -r BadMergeRev --parent BadMergerevBeforeOnA 
Run Code Online (Sandbox Code Playgroud)

这看起来很好,花花公子,直到你决定稍后在正确的方向合并,你最终会发生各种令人讨厌的事情,特别是分支B上删除/注释掉的代码突然变得没有注意或没有注释.

到目前为止,还没有一个可行的解决方案,除了"让它做它的事情,然后解决所有的问题",说实话有点fubar.

这是澄清问题的图像:

[原始图像丢失]

文件C&E(或更改C&E)必须仅出现在分支b上,而不是出现在分支a上.这里的版本A9(分支a,revno 9)是问题的开始.

修订版A10和A11是"退出合并"和"合并退出"阶段.

并且修订版B12是多变的,错误地反复删除了意图不被删除的更改.

这种困境引起了很多挫折和蓝烟,我想结束它.

注意

尝试禁止反向合并可能是一个明显的答案,无论是使用钩子还是使用策略,我发现这种情况相当高并且发生这种情况的可能性很大,即使采取了对策,你仍然必须假设它不可避免地发生,以便你可以解决它.

详细说明

在模型中我使用了Seperate文件.这些使问题听起来很简单.这些只是代表任意变化,可能是一个单独的路线.

此外,为了增加对伤害的侮辱,在分支A上发生了实质性的变化,留下了常见的问题"分支A的变化与分支B的变化发生冲突,分支B刚刚出现(并且退出)看起来像一个变化在分支A而不是"

关于历史重写技巧:

所有这些追溯活动解决方案的问题如下:

  1. 我们有9000次提交.
  2. 因此新鲜克隆需要半小时
  3. 如果某个存储库中甚至存在一个坏的克隆,那么它就有可能与原始存储库重新联系,并再次将其重新打开.
  4. 每个人都已经克隆了这个存储库,现在已经过了几天,正在进行提交.
  5. 一个这样的克隆,碰巧是一个真实的网站,所以"擦掉那个,从头开始"="大nono"

(我承认,上面的许多内容都有些愚蠢,但它们超出了我的控制范围).

唯一可行的解​​决方案是假设人们能够并且将会做错事,并且有一种方法可以"消除"这种错误.

merge mercurial branch dvcs

77
推荐指数
2
解决办法
1万
查看次数

用户控件未显示在工具箱中

我有一些我在ProjectA中创建的UserControl.我有一个ProjectB,它有一个我想要控件的窗体.这两个项目都在一个解决方案中.从ProjectB引用了ProjectA,因此它可以"看到"UserControls.

但是,UserControls不会显示在工具箱中,以便我拖动到Windows窗体.

我试过重建.我还删除了'bin'目录以强制重建所有.

如何让VS2008用我的UserControls填充工具箱?

user-controls toolbox visual-studio-2008

71
推荐指数
7
解决办法
9万
查看次数

.cpp文件和.h文件有什么区别?

因为我已经制作了.cpp文件然后将它们转换成.h文件,我能找到的唯一区别就是你不能#include .cpp文件.我错过了什么区别?

c++ header include

57
推荐指数
6
解决办法
11万
查看次数

什么是*.vshost.exe.config文件?

当我使用VS2008编译应用程序时,我有时会得到2个相同的配置文件:

  • *.exe.config
  • *.vshost.exe.config

后者是什么?

config visual-studio-2008

48
推荐指数
2
解决办法
3万
查看次数

48
推荐指数
3
解决办法
12万
查看次数

在Postgresql中选择未锁定的行

有没有办法在Postgresql中选择未锁定的行?我有一个多线程应用程序将执行:

Select... order by id desc limit 1 for update
Run Code Online (Sandbox Code Playgroud)

在桌子上.

如果多个线程运行此查询,它们都会尝试拉回同一行.

一个获取行锁,另一个获取然后在第一个更新行后失败.我真正喜欢的是第二个线程获取匹配该WHERE子句的第一行并且尚未锁定.

为了澄清,我希望每个线程在执行select之后立即更新第一个可用行.

因此,如果有行ID: 1,2,3,4,第一个线程将进入,选择行ID=4并立即更新它.

如果在该事务期间第二个线程出现,我希望它能获得行ID=3并立即更新该行.

对于Share,也不会完成此操作,nowait因为该WHERE子句将与锁定的行匹配(ID=4 in my example).基本上我喜欢的是这个WHERE条款中的"并没有锁定" .

Users

-----------------------------------------
ID        | Name       |      flags
-----------------------------------------
1         |  bob       |        0
2         |  fred      |        1
3         |  tom       |        0
4         |  ed        |        0
Run Code Online (Sandbox Code Playgroud)

如果查询是" Select ID from users where flags = 0 order by ID desc limit …

postgresql locking

42
推荐指数
5
解决办法
1万
查看次数

VS2008中缺少"添加Web引用"选项

我正在尝试将Web引用添加到VS2008 .Net 3.5控制台应用程序,但该选项不存在.有"添加参考"和"添加服务参考"的选项.

console-application visual-studio-2008

29
推荐指数
2
解决办法
2万
查看次数

无法将文件拖到解决方案资源管理器

我有一个不寻常的问题.我一直能够将文件和文件夹从我的桌面或资源管理器拖到visual studio中的解决方案资源管理器中,并将文件添加到我的项目中.不,当我尝试拖动文件时,我只是得到"停止"符号.

我正在使用在Vista Home Premium 64位上运行的Visual Studio 2008.

有任何想法吗?

visual-studio-2008 visual-studio

25
推荐指数
2
解决办法
6881
查看次数

在Visual Studio中查看多个文件

我刚刚意识到Office 2007现在默认显示多个页面.我终于可以利用我买的那台巨大的显示器了.

Visual Studio有类似的功能吗?

像"查看 - >两页"之类的东西

interface visual-studio

21
推荐指数
2
解决办法
2万
查看次数

从同一个项目构建DLL和静态库

我在Visual Studio 2005下编译了许多本机C++库(Win32,没有MFC),并在许多解决方案中使用.

我希望能够选择编译并将它们链接为静态库或DLL,具体取决于我正在使用它们的特定解决方案的需求.

最好的方法是什么?我考虑过这些方法:

1.多个项目文件

  • 示例:"foo_static.vcproj"vs"foo_dll.vcproj"
  • 亲:很容易为新库生成,而不是过多的手动vcproj munging.
  • Con:两个地方的设置,文件列表等太容易失去同步.

2.单个项目文件,多个配置

  • 示例:"Debug | Win32"vs"Debug DLL | Win32"等.
  • Pro:文件列表更容易保持同步; 编译选项更容易保持同步
  • Con:我为Win32和Smart Device目标构建,所以我已经有多个配置; 我不想让我的组合爆炸更糟("FooPhone的静态库| WinMobile 6","FooPhone的动态库| WinMobile 6","BarPda的静态库| WinMobile 6"等.
  • 更糟糕的是:VS 2005有一个坏习惯,假设你有一个为平台"Foo"定义的配置,那么你真的需要它适用于你的解决方案中的所有其他平台,并且随意地插入所有配置/平台配置的所有排列受影响的vcproj文件,无论是否有效.(向MS提交的Bug;作为WONTFIX关闭.)

3.单个项目文件,通过vsprops文件选择静态或动态

  • 示例:将相应的vcproj片段存储在属性表文件中,然后在需要静态库时将"FooApp静态库"属性表应用于配置/平台组合,并在需要DLL时应用"FooApp DLL"属性表.
  • 优点:这就是我真正想要做的!
  • 缺点:似乎不可能. 似乎静态和动态库之间切换的.vcproj属性(Configuration元素的ConfigurationType属性)不能被.vsprops文件覆盖.Microsoft针对这些文件发布的架构仅列出<Tool>和<UserMacro>元素.

编辑:如果有人建议,我也尝试了一个更"聪明"的#3版本,其中我定义了一个包含名为"ModuleConfigurationType"的UserMacro的.vsprops,其值为"2"(DLL)或" 4"(静态库),并更改了.vcproj中的配置ConfigurationType="$(ModuleConfigurationType)".Visual Studio以静默方式无需警告即可删除该属性并替换为该属性ConfigurationType="1".太有帮助了!

我错过了更好的解决方案吗?

c++ winapi visual-studio-2005 projects-and-solutions vsprops

21
推荐指数
2
解决办法
1万
查看次数