2

我有一个用 python 编码的项目,我使用 svn 进行源代码控制。但是现在,我有一部分代码需要用 Perforce 提交。由于源代码树很大,有很多文件,我不想在不同的计算机上复制文件。所以我想继续在 SVN 上工作,有时将代码推送到 Perforce。

但我有一些问题要做到这一点:

  • 在 SVN 中移动或删除文件时,在 Perforce 中提交代码会导致错误提示文件丢失且无法提交。所以没有任何承诺。

    • 在进行结帐或提交时,如果本地计算机上丢失文件,是否可以告诉 Perforce 从服务器中删除文件?
  • 我不希望我的所有代码都在 Perforce 上,所以我只标记了一些要添加的目录。那里没问题。但是要检索修改和新文件,要做的就是执行 Perforce“检查”。如果我在我的开发树的根目录上执行此操作,它会标记在我的开发树中添加所有文件。所以我结束了对我之前添加的每个目录的结帐,这非常烦人且耗时。

    • 有没有办法告诉 Perforce 只关心一些目录?(我知道可以告诉它不要关心某些模式。但是我有很多目录不需要关心,只有少数需要关心,所以这里的另一种方式会更好。)

如果有人有建议,他/她会成为我的英雄;-)。谢谢!

4

3 回答 3

2

我的建议是不要混合使用两种不同版本控制工具的工作区。这就像用一把上膛的霰弹枪指着你的脚玩耍。总有一天,它会熄灭。

自从我上次使用 Perforce 已经有好几年了,但我记得它肯定不喜欢其他人弄乱它的工作空间。Svn 也不喜欢它。

相反,请将工作区分开。磁盘空间很便宜。很难想象代码库如此之大以至于不可行。理想情况下,仅在一个存储库中进行版本化。如果您仍然需要在两个地方对文件进行版本控制,请设置一个合并工具来同步工作空间之间的更改。在 Windows/Linux 环境下,Beyond Compare 是一款出色的手动合并工具。对于自动合并,可能需要一些脚本来从一个存储库中提取补丁并将它们应用到另一个存储库。

于 2009-06-08T09:12:50.397 回答
0

首先,您应该尽一切可能让设置此系统的人相信,混合不同的源代码控制存储库对生产力非常不利。

现在,您的问题出现了,因为您在文件系统级别复制这两个存储库之间的重叠,并且您没有在 Perforce 端设置适当的客户端规范来过滤掉不需要的文件/文件夹。

正如上面所建议的,您应该修改您的 Perforce 客户端规范,以明确排除您不想在 Perforce 软件仓库中看到的文件和文件夹:

-//depot/path/to/SVNfiles/folder-I-dont-want/... //client/local/path/to/folder-I-dont-want/...`
-//depot/path/to/SVNfiles/file-I-dont-want //client/local/path/to/file-I-dont-want`

等等

如上所述,运行以下 Perforce 命令(来自http://kb.perforce.com/UserTasks/WorkingDisconnected):

p4 diff -sd //myclient/... | p4 -x - delete
p4 diff -se //myclient/... | p4 -x - edit
find . -type f -print | p4 -x - add

然后执行p4 submit,手动查看添加/删除/编辑的文件列表,删除不应该存在的文件并修复您的上述列表,然后当您满意时验证提交。

一旦添加了您不想要的新文件/文件夹,请不要忘记更新客户端规范。

但是正确的解决方案绝对不是这样做,一旦开始在文件夹之间移动文件,就会遇到问题,最终会遇到合并问题等。

您可以通过将 SVN 文件放入 Perforce 文件夹内的专用分支中来解决合并冲突,然后将冲突与其实际目标集成/合并,但这只会带来额外的工作来解决最初不应该存在的问题地方。

于 2011-03-19T15:14:39.977 回答
0

听起来您的客户端规范中有整个服务器,并且正在检查,可能使用 P4V。不要那样做。在您想要的位置仅使用您想要的目录来更改您的客户端规范。然后使用 p4 sync 让他们更新其他人所做的更改。

你对这个问题的描述相当模糊。为什么你想要一些 perforce 下的文件?perforce 中的文件是否也在 svn 中?

编辑:

我怀疑http://kb.perforce.com/UserTasks/WorkingDisconnected可能用于同步从 svn 到 perforce 的更改。

设置您的 perforce 工作区/客户端规范以将共享位置映射到其颠覆检查位置。

编辑2:

根据您的评论,也许您需要的是 subversion 服务器上的提交挂钩,它将某些文件的更改提交到 perforce 服务器?

在这种情况下,subversion 服务器可以有一个 perforce 客户端,并在提交更改之前执行正确的 p4 编辑/添加/删除调用?

于 2009-06-08T16:49:48.370 回答