标签: mercurial

如何在Mercurial中组合两个项目?

我有两个独立的mercurial存储库.在这一点上,它们"成为一体"是有道理的,因为我想同时处理这两个项目.

我真的很喜欢这两个项目,每个项目都是新存储库中的子目录.

  1. 我如何合并这两个项目?
  2. 这是一个好主意,还是应该将它们分开?

看来我应该能够从一个存储库推送到另一个存储库......也许这真的很直接?

mercurial

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

如何在mercurial中止合并?

我搞砸了合并.我想恢复然后再试一次.
有没有办法在提交之前恢复合并?

hg revert没有做我想做的事情,它只会恢复文件的文本.Mercurial中止了我合并的第二次尝试并抱怨原始合并仍未提交.

有没有办法在hg merge命令之后但在提交之前撤消合并?

version-control merge mercurial dvcs undo

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

Mercurial:"工作目录中未跟踪的文件与请求的修订版中的文件不同"?

谁能告诉我这个Mercurial错误意味着什么?

工作目录中未跟踪的文件与请求的修订版中的文件不同

执行hg fetch时发生了这种情况:

C:\myapp>hg fetch ssh://hg/myapp-v1
pulling from ssh://hg/myapp-v1
searching for changes
adding changesets
adding manifests
adding file changes
added 93 changesets with 693 changes to 78 files (+1 heads)
updating to 797:0df7dbe7dc06
196 files updated, 0 files merged, 196 files removed, 0 files unresolved
merging with 704:edb7765768c6
abort: untracked file in working directory differs from file in requested revision: 'a/b/c/d.java'
Run Code Online (Sandbox Code Playgroud)

据我所知,这个文件(a/b/c/d.java)与.hgignore中配置的任何路径都不匹配.并且这个特定文件在两个(myapp和myapp-v1)存储库中也是相同的.

我不清楚这甚至意味着什么.??

merge mercurial

78
推荐指数
4
解决办法
5万
查看次数

在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万
查看次数

Virtualenv和源版本控制

我最近开始了一个Django项目,我很快意识到virtualenv真的很有用,原因很多.我设置了virtualenv和我的项目,但现在我想知道我应该添加到源代码控件的文件(在我的例子中,Mercurial).我应该在venv文件夹下添加所有文件吗?如何确保同事可以克隆并立即开始工作而不必再次设置env?

python django mercurial virtualenv

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

hg strip vs hg backout和hg revert

mercurial命令有什么区别,

  • hg strip
  • hg backout
  • hg revert

所有这些命令基本上用于恢复/撤消先前变更集的效果.

mercurial tortoisehg

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

是否可以在线浏览OpenJDK的来源?

是否可以在线浏览OpenJDK的源代码,就像我可以使用SourceForge的项目一样?我之前从未使用过水星,所以我感到很困惑.

(注意:我不想下载源代码.我只想在线浏览它,看看如何实现某些方法.)

mercurial openjdk

76
推荐指数
5
解决办法
3万
查看次数

如何设置Mercurial用于提交的用户名?

当我在Mercurial中提交这样的东西时:

hg commit -m "username question"
Run Code Online (Sandbox Code Playgroud)

我看到这个输出:

No username found, using 'WindowsVistaAdmin@ChunkyMonkey' instead
Run Code Online (Sandbox Code Playgroud)

ChunkyMonkey是我的Windows机器名称,显然WindowsVistaAdmin是我在此计算机上登录的用户.

如何将用户名设置为更受尊重的用户,或者至少更简洁?

mercurial

75
推荐指数
4
解决办法
7万
查看次数

hg log - 如何获取最近5个日志条目?

我有一个Mercurial项目,有数百个提交.

当我想查看我输入的最新条目时

hg log
Run Code Online (Sandbox Code Playgroud)

然后等待所有内容打印出来,然后滚动回到顶部.

如何打印出最近的5个条目?

mercurial

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

mercurial中的最佳实践:分支与克隆,以及部分合并?

...所以我已经习惯了Mercurial(add,)的简单内容commit,diff并发现了.hgignore文件(是的!)并且已经掌握了在分支(branch,update -C)之间创建和切换的问题.

我有两个主要问题:

  1. 如果我在分支"Branch1"并且我想从分支"Branch2"中提取一些但不是所有的更改,我该怎么做?特别是如果所有更改都在一个子目录中.(我想我可以克隆整个存储库,然后使用像Beyond Compare这样的目录合并工具来选择我的编辑.看起来应该有一种方法可以将一个文件或一个目录中的更改隔离开来.)

  2. 在分支之间切换update -C似乎很容易,我想知道为什么我会打扰使用clone.我只能想到几个原因(见下文) - 还有其他一些我缺席的原因吗?

    一个.如果我需要同时对两个版本/分支进行操作(例如,执行性能度量差异)

    湾 用于备份(clone到物理上不同位置的网络驱动器的存储库)

    C.像我上面提到的那样进行选择合并.

merge mercurial branch

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