为什么在添加文件时 mercurial 文件集不起作用?
Why don't mercurial file sets work when adding files?
我正在尝试使用 mercurial 文件集将所有文件添加到目录树中,不包括非常大的文件和任何二进制文件。从 mercurial 文档中抄袭,这个命令应该做到这一点:
hg init
hg add 'set: size("<1M") and not binary()'
但是这个 returns 状态代码为 0,并且没有向我的新的空回购添加任何内容。我试过 'set: not binary()' 也没有用。
令人沮丧的是,虽然我可以 google for mercurial file sets,并找到很多示例,但当它不起作用时我找不到任何可以帮助解决问题的东西!
我没有 .hgignore 文件,它是一个全新的空存储库。水星 4.2.2。
我正在测试的目录有几个人工创建的文件用于测试。在我的实际用例中,我从客户那里继承了一个数 GB 的各种源代码和二进制文件的 tarball,我想在开始破解以解决它们的问题之前将所有源代码放入 mercurial,因此需要排除二进制文件和大文件否则会阻塞 mercurial 的文件。
这是我的小测试脚本:
#!/bin/sh -ex
dd if=/dev/urandom of=binary_1k bs=1 count=1024
dd if=/dev/urandom of=binary_2M bs=1 count=2097152
echo "This. Is, a SMALL text file." > text_small
hexdump binary_1k > text_1k
hexdump binary_2M > text_2M
ls -lh
file binary_1k
file binary_2M
file text_1k
file text_2M
hg init
hg add 'set: size("<1M") and not binary()'
hg status -a
hg add 'set: not binary()'
hg status -a
hg add 'set: size("<1M")'
hg status -a
最后,每个 status 命令报告 repo 中没有文件,add 命令报告没有错误。
问题是文件集查询 Mercurial 的存储库数据库,它只知道属于存储库的一部分或已添加的文件。
一种解决方案是全部添加,然后删除您不喜欢的文件,例如:
hg forget 'set:size(">1M") or binary()'
这行得通,因为查询还需要最近添加的文件,即使它们尚未提交。
我正在尝试使用 mercurial 文件集将所有文件添加到目录树中,不包括非常大的文件和任何二进制文件。从 mercurial 文档中抄袭,这个命令应该做到这一点:
hg init
hg add 'set: size("<1M") and not binary()'
但是这个 returns 状态代码为 0,并且没有向我的新的空回购添加任何内容。我试过 'set: not binary()' 也没有用。 令人沮丧的是,虽然我可以 google for mercurial file sets,并找到很多示例,但当它不起作用时我找不到任何可以帮助解决问题的东西! 我没有 .hgignore 文件,它是一个全新的空存储库。水星 4.2.2。 我正在测试的目录有几个人工创建的文件用于测试。在我的实际用例中,我从客户那里继承了一个数 GB 的各种源代码和二进制文件的 tarball,我想在开始破解以解决它们的问题之前将所有源代码放入 mercurial,因此需要排除二进制文件和大文件否则会阻塞 mercurial 的文件。
这是我的小测试脚本:
#!/bin/sh -ex
dd if=/dev/urandom of=binary_1k bs=1 count=1024
dd if=/dev/urandom of=binary_2M bs=1 count=2097152
echo "This. Is, a SMALL text file." > text_small
hexdump binary_1k > text_1k
hexdump binary_2M > text_2M
ls -lh
file binary_1k
file binary_2M
file text_1k
file text_2M
hg init
hg add 'set: size("<1M") and not binary()'
hg status -a
hg add 'set: not binary()'
hg status -a
hg add 'set: size("<1M")'
hg status -a
最后,每个 status 命令报告 repo 中没有文件,add 命令报告没有错误。
问题是文件集查询 Mercurial 的存储库数据库,它只知道属于存储库的一部分或已添加的文件。
一种解决方案是全部添加,然后删除您不喜欢的文件,例如:
hg forget 'set:size(">1M") or binary()'
这行得通,因为查询还需要最近添加的文件,即使它们尚未提交。