我有一个我正在尝试自动化的过程,我必须将生成的输出文件检查到perforce。我知道这远非理想,但这不是我能真正解决的问题。为了确保所有生成的文件都进入perforce,我必须将整个目录检查到perforce。根据perforce的文档in their knowledge base,你可以运行一个相当狡猾但看起来很有效的命令:
dir /s /b /a-d | p4 -x - add
执行此操作时,所有内容都会首先运行,对于带有撇号的每个文件名(单引号?)我收到一条消息说
filename - 缺少,假设文字。
尽管我要添加的文件列表是由dir生成的。换句话说,由于它是 dir 中的文件列表,因此这些文件中的一个文件丢失应该是不可能的(除非另一个进程干扰)。
如果我尝试提交生成的更改列表,则在找不到丢失的文件时提交失败。我尝试了一些长期的事情,比如将dir输出重定向到一个文件,然后从该文件中读取add的参数,但它的工作原理是一样的。
也许所有这一切中最疯狂的部分是我发现的那个
p4 add Jim's_File.txt
如果我使用制表符完成,则有效,但如果我键入,粘贴或管道名称,则
失败。我不知道如何解决这个问题,但我真的很喜欢一些想法。
答案 0 :(得分:1)
适合我:
创建了一个名为'file.txt
的文件c:\some_path>p4 add a'file.txt
//source/path-in-depot/a'file.txt#1 - opened for add
也许你应该提一下你的Perforce版本和操作系统。
一般来说,最好将每个文件名用引号("a'file.txt"
)包装,或者在Windows shell中使用^
符号来转义任何具有特殊含义的字符。
答案 1 :(得分:0)
在2012.1版本中,有一个新的p4 reconcile
命令,使得愚蠢的dir | p4 add
技巧变得不必要。 p4 reconcile
将在文件名中处理撇号以及其他难以引用的字符串。
我认为2012.1服务器仍处于测试阶段。这可能是knowledge base article中未提及的原因。