2011-04-06 48 views
2

我有许多文件已签出,可以提交更改。强制Perforce接受作为有效的工作区视图

我意识到我的客户端规范对我的备用根进行了硬编码,因此我从客户端规范中的所有行中删除了备用根,并将其指定在备用根框中。

我还有一些文件没有检出,我还没准备好添加到更改列表中,所以我重命名了下面的目录结构,然后同步了我需要的所有分支,然后将目录重命名为AltBranch并将其重命名为旧的。

现在,所有检出的文件都列为“未映射到工作区视图” - 但它们仍然存在。

我想迫使Perforce公司与我的版本同意,所以我尝试p4 sync -k,但是我得到

//.../X.cpp#10 - is opened for edit and can't be deleted 

我又试图p4 sync -k -f的错误,但我得到的错误

//.../X.cpp#10 - refreshing C:\Work\...\X.cpp 
//.../X.cpp#10 - is opened for edit and can't be deleted 

在整个我真的很喜欢Perforce,然而它坚持始终知道最好的令人沮丧

回答

0

我已成功地生产出包含Perforce的命令序列,以达到我想要的批处理文件。

该解决方案是在Windows/DOS特定的 - 尽管我可以想象其他命令shell可以做需要此修复程序解析:

@ echo off 
echo Please Exit Perforce 
pause 
setlocal 
rem Retrieve depot spec format of file 
for /f "delims=# " %%d in ('p4 files %1') do set p4name=%%d 
rem Retrieve current pending changelist 
for /f "tokens=5 delims= " %%d in ('p4 opened %p4name%') do set change=%%d 
p4 revert -k %p4name% 
p4 sync -k %p4name% 
p4 edit -c %change% %1 

这个版本是专门针对文件,虽然目录的版本将有可能代files for dirs

同样愚蠢的是,如果tick中的命令失败,命令提示符不会设置ERRORLEVEL。

1

重新安排你的客户端映射whe ñ您没有检出文件。你有一个spec depot吗?如果是这样,您可以通过从规格仓库中恢复,轻松地返回到客户定义的先前版本。然后,提交或搁置您的文件,以便您可以达到在工作区中没有打开的文件的地步。然后,您可以重新安排您的客户端映射并尝试不同的布局,并且Perforce会高兴地重新排序磁盘上的文件,而不会遇到打开文件的问题。

+0

我们没有规格仓库。我不确定那是什么。 未检出的打开文件会发生什么情况? – 2011-04-12 14:23:39

+0

“打开”与“检出”相同。要了解规格仓库:http://www.perforce.com/perforce/r10。2 /手册/ p4sag/03_superuser.html#1083233 – 2011-04-13 14:00:57

0

我认为你可以做一个p4 reopen <changelist>它应该恢复正常。

0

我有“未映射到工作区视图”,事实证明我有我的客户端规格/工作区必须重新排序的两个映射。

不好:

//B/foo/... //mySpec/foo/... 
//A/... //mySpec/... 

好:

//A/... //mySpec/... 
//B/foo/... //mySpec/foo/... 
相关问题