MKS 如何用 SI 命令下载指定 Checkpoint 的代码?

giantlingz@gmail.com · 2008年12月31日 · 0 次阅读

各位高手,我想写一个 bat 文件,用命令 synchronize 一个指定 revision 的代码,能否用 si resync 命令?如果能的话参数如何设置?

我现在的做法是:1 ,在 build 那里 create 一个我要下载的 checkpoint(比如 revision 是 1.4.3)的 sandbox;2, 拷贝它的 project.pj 文件到我的 workspace 的文件夹(替换掉在 variant 里的.pj); 3 ,resync

这样可以下载到我要的版本的代码,但是这个做法每次都要在 build 里起 sandbox,很麻烦,所以希望有像 si xxx(cmd) --projectRevision=1.4.3 之类的命令来实现。

希望各位大侠赐教啊

你为何不在你一开始创建的 sandbox 中下载 1.4.3 版本啊?

还有一个疑问是这种针对某个 checkpoint 的 checkout 代码的机会是否很多?是基于什么样的考虑的?

[[i] 本帖最后由 scmroad 于 2009-1-1 11:46 编辑 ]

回 scmroad 兄: 1,情况是这样的:一个项目的代码(多人同时开发,涉及多个文件)每天经审查过后做一次 checkpoint,然后把这个 checkpoint 的代码 deploy 到服务器去,这是用来保证上到服务器的代码无误,checkpoint 的代码是经过审查的;然后大家基于这个 checkpoint 继续开发; 2,代码每天都会更新,resync checkpoint 这个动作会很频繁(几乎每天),所以不会一开始就下载某一个版本。当然,开始的版本是 1.1 的,在这上面不断更新。 3,目前的 sandbox 是在 variant 中的,不能随意的针对某个 checkpoint 来下载代码,所以想问下有无 si 命令可以实现对 checkpoint 下载代码?

不知描述的清楚否,欢迎各位说说看法。

kitycat 于 2009-1-2 22:22 发表
回 scmroad 兄: 1,情况是这样的:一个项目的代码(多人同时开发,涉及多个文件)每天经审查过后做一次 checkpoint,然后把这个 checkpoint 的代码 deploy 到服务器去,这是用来保证上到服务器的代码无误,checkpoint 的代码是经过审查的;然后 ... [/quote]

God,找了好久才找到.

每个 checkpoint 一般都有一个 label 对吧?你可以针对这个 label 进行 resync 就可以了.看下面的例子. [code] you can resynchronize all files with label a or b through: si resync --filter=label:a,label:b[/code]

那么你的问题就可以用类似下面的用法了. [code] si resync --filter=label:1.4.3[/code]

你试试看行的通不?

上边的内容是从 SourceCRLReference.pdf 这个文档里面找到的. 具体是 316 页 General Options Some MKS Source commands share the following general options. --filter=filteroptions allows you to select members for all commands that take a list of members, using filteroptions, which can be one or more of the following: label[:name] selects any member whose member revision has the specified label. anylabel[:name] selects any member that contains a revision that has the specified label.

哇塞,可以从这么深的文档里挖出这命令来,厉害啊

拜服。

我试试先 apply checkpoint label,这样每个 member 都有我需要的 label 了,然后按上面那个命令 resync。

试试先,有结果再来这里分享。

我试了 si resync --filter=label:1.4.3 , 结果还是下载到最新的代码,不受这个 filter 控制

唉,这个问题很奇怪,如果这个 filter 不对,应该会报错的; 没有报错,却不 work。

:L 天杀的...居然不报错,也不运行....你再看看,然后我也找找,看看还有其它办法没有.

这个 filter label 选项是否只能对某种格式的 label 才起作用? 因为这个 filter 功能应该是有用的,只是用法可能有限制,有空要试试其他 label

kitycat 于 2009-2-4 23:15 发表
这个 filter label 选项是否只能对某种格式的 label 才起作用? 因为这个 filter 功能应该是有用的,只是用法可能有限制,有空要试试其他 label [/quote]

再给你个方法,你试试看行不行

[size=11pt] Iguess you’re talking about getting the code into a sandbox rather than checkingit out (unless you really want to alter what’s in a label). To get the codeyou’d you actually need to create a build sandbox (using si createsandbox) which points to the specific label. If you already have a sandbox and you wantto point it to a different label then you can use the ‘si retargetsandbox’command to make it point to a different dev path or build. [size=11pt]
[size=11pt] Hopethis helps.

需要 登录 后方可回复。