如何从空工作目录使用“hg cat”?

发布于 2024-09-11 04:33:34 字数 366 浏览 4 评论 0原文

我有一个位于 x:/projects/repo1 的存储库。工作目录已使用 hg update null 清空。我想从那里提取一些文件的最新版本到本地目录。

我尝试了这个:

x:\projects\repo1> hg cat -o c:\sql\%s scripts\*.sql -r tip

我收到此错误:

scripts\*.sql: No such file in rev 14f07c26178b

如果工作目录不为空,则相同的命令可以正常工作。这不起作用有充分的理由吗?或者您知道将某些文件从那里提取到本地目录的另一种方法吗?

I have a repo located at x:/projects/repo1. The working directory has been emptied using hg update null. I want to extract the latest version of some files from there to a local directory.

I tried this:

x:\projects\repo1> hg cat -o c:\sql\%s scripts\*.sql -r tip

I get this error:

scripts\*.sql: No such file in rev 14f07c26178b

The same command works fine if the working directory is not empty. Is there a good reason why this does not work? Or do you know another way of extract some files from there to a local directory?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

花间憩 2024-09-18 04:33:34

hg cat 命令适用于单个文件。如果您想要多个文件,请使用 hg archive 命令,这会使 zip 文件或目录充满文件。这是你的命令:

x:\projects\repo1> hg archive --include scripts\*.sql -r tip c:\sql

The hg cat command is for single files. If you want multiple files use the hg archive command, which makes zipfiles or directories full of files. Here's your command:

x:\projects\repo1> hg archive --include scripts\*.sql -r tip c:\sql
孤独陪着我 2024-09-18 04:33:34

看来 hg cat 不支持路径中的通配符。因此,您应该使用完整的文件名:

hg cat -r tip scripts/foo.sql

当您的工作副本是最新的 tip 修订版时,您的 shell 会为您进行通配符替换。

hg manifest 命令也可能有助于获取跟踪的文件列表。

It seems that hg cat doesn't support wildcard symbols in paths. So you should use the full file name:

hg cat -r tip scripts/foo.sql

When your working copy is up to date with the tip revision, your shell does wildcard substitution for you.

The hg manifest command also might be helpful for getting tracked file listings.

情深已缘浅 2024-09-18 04:33:34

这个答案是您对 Andrey 的评论答案

hg manifest采用--rev参数,您可以使用它来查看存储库中所有文件的列表:

hg manifest --rev tip

获取匹配的文件列表提示处的模式,使用:

hg stat --all --include *.sql --rev tip --no-status
hg stat -A -I *.sql --rev tip -n                    # using abbreviations.

从那里您可以将输出重定向到文件并将每一行编辑为 hg cat 命令,就像您原来的问题一样。看来(至少对我来说,已经做了一些实验)hg cat 使用工作目录的内容(而不是指定版本的存储库的内容)进行全局匹配,因此一旦您知道文件的确切名称,您就可以在任何版本中hg cat它。

This answer is to your comment on Andrey's answer:

hg manifest takes a --rev argument that you can use to see the list of all files in your repository:

hg manifest --rev tip

To get the list of files matching a pattern at the tip, use:

hg stat --all --include *.sql --rev tip --no-status
hg stat -A -I *.sql --rev tip -n                    # using abbreviations.

From there you could redirect the output to a file and edit each line into a hg cat command like in your original question. It appears (to me, at least, having done some experimentation) that hg cat uses the contents of the working directory -- rather than the contents of the repository at the revision specified -- for glob-matching, so once you know the exact name of the file, you can hg cat it at any revision.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文