我有一个平台中立的汞代码回购,叫做“模拟器”。
并希望在构建之前应用针对特定平台优化的修补程序。
根据指南,我们可以通过使用带护卫的补丁来实现这一点。
但是,它开始变得很麻烦了,因为我们的补丁队列包含了名为windows-memory- 100+ +windows、unix-memory-Optimization.补丁+unix、windows-io-实验性-bug-unix +windows等补丁。我们将其组织为系列文件中的组,但是文件变得越来越大,使用qseries / qapplied变得难以管理。
相反,我们希望有一个窗口、unix和mac的队列。
这样就可以将补丁组织为:
然后将每个平台的补丁堆栈交换到模拟器回购系统的内部和外部。这样我就可以处理windows补丁栈和pop/push各种子系统优化补丁,并独立于unix或mac修补程序栈对它们进行处理。
看起来我无法做到这一点,除了为每个平台做出3种不同的repos并以这种方式维护补丁堆栈之外。
除了手动复制repo中的..hg/修补程序目录之外,还有其他方法来完成“交换”修补程序栈吗?
发布于 2009-06-09 15:48:02
对Mercurial队列的有趣使用:)
我在这里假设您已经在某个地方对您的mercurial队列进行版本化。如果您不/对于那些不知道如何做到这一点的人,请看一看hgbook的相关部分:这是一种在不应用补丁的情况下以增量方式协作/保存您的工作的好方法。
三个命名分支
应该可以在MQ存储库中维护三个不同的命名枝,每个平台一个。
要切换平台,只需切换活动分支即可。
(与alias mq='hg -R $(hg root)/.hg/patches')
首先创建一个windows分支:
$ mq branch windows
marked working directory as branch windows已经创建,但还没有提交。
做一些事情,添加补丁:
$ hg qnew windowspatch
... do some stuff刷新、pop和提交:
$ hg qref
$ hg qpop -a
$ mq ci -m 'new windows branch'您现在拥有默认的分支和新的windows分支:
$ mq branches
windows 65:5fd4ef0b96c9
default 64:06c1a56a3c08 (inactive)现在创建一个Unix分支.
首先切换回基本默认分支:
$ mq up default
1 files updated, 0 files merged, 1 files removed, 0 files unresolved创建一个新的unix分支并添加一个特定于unix的修补程序:
$ mq branch unix
marked working directory as branch unix
$ hg qnew unixpatch
... blahblah
$ hg qref
$ hg qpop -a
$ mq ci -m 'adding unix branch'
$ mq branches
unix 66:c51bb2c7b413
windows 65:5fd4ef0b96c9
default 64:06c1a56a3c08 (inactive)用法
在对mq repos进行操作之前不要忘记使用qpop -a ..。
推送所有的窗口补丁
$ mq up windows
xx files updated, yy files merged, zz files removed, ww files unresolved
$ hg qpush -a三次物理恢复
维护三个单独的(mercurial队列)分支看起来有点吓人。如果是这样的话,您可以只使用三个不同的MQ存储库:每个平台一个,每个版本在不同的地方进行。
例如:
$ cd mqs
$ hg qclone mq-windows windows
$ hg qclone mq-unix unix
$ hg qclone mq-mac mac要在不同的平台上工作,只需切换文件夹(repos)。这一概念类似于第一种方法。但是,与其在一个MQ回购中使用三个内部分支,不如使用三个单独的MQ repos。
发布于 2009-09-05 00:23:17
若要为"mq“创建等效的Windows别名,请在与"hg.exe”相同的目录中创建一个批处理文件(例如,"C:\Program \TortoiseHg“),将其命名为"mq.cmd",并粘贴以下代码:
@echo off
FOR /F "tokens=1 delims=" %%A in ('hg root') do SET hgRoot=%%A
hg -R %hgRoot%/.hg/patches %1 %2 %3 %4 %5 %6 %7 %8 %9发布于 2010-11-21 20:30:42
我知道这个问题很古老,但也许有人会对此感兴趣,知道还有另一个解决办法。我认为在问题被问到的时候,这是不可能的,但是这里有更多关于这种情况的信息:MQ上的多个补丁队列
https://stackoverflow.com/questions/970669
复制相似问题