繁体   English   中英

SVN外部文件未提交是否正常?

[英]Is it normal that SVN external files are not committed?

我是Subversion的新手,最近学会了如何使用svn:externals自动导入属于其他存储库的文件。 现在,当我提交trunk文件夹并创建标记以拍摄项目的快照时,定义为外部的文件/文件夹将不会添加到标记文件夹中。

例如,我有这个文件夹结构

Z:\\回购\\ repoA

Z:\\回购\\ repoB

Z:\\项目\\ workB

我在Z:\\Projects\\workB svn:externals设置为file:///Z:/repos/repoA/trunk/lib trunk/lib以便repoA的lib文件夹自动添加到当前工作目录中, Z:\\Projects\\workB\\trunk 实际上,当我执行SVN Update ,会在trunk文件夹下创建lib文件夹。

Z:\\Projects\\workB\\trunk上编辑了一些文件并执行SVN Commit... ,我从上下文菜单中选择了TortoiseSVN -> Branch/Tag To Path字段中,键入tags/1.0.1并按下OK。 1.0.1标记已成功创建。

Z:\\Projects\\workB\\tags上执行SVN Update后,出现了一个名为1.0.1的文件夹,但没有外部文件。

这是正常的吗? 我预计导入的文件也会存在,因为它们位于工作目录的trunk文件夹中。


我在Assembla创建了两个公共存储库,供任何人测试。

第二个存储库具有外部定义,该定义从第一个存储库中下拉lib文件夹。 当我从第二个存储库创建当前主干文件的标记时,它不会将外部文件添加到标记文件夹。 另外,当我签出标签文件夹时,它不会将外部文件添加到本地工作副本。

设置externals属性时,它不会将文件从外部存储库复制到工作存储库。 相反,它只是创建一个“注释”,指出将来从哪里获取这些文件。

因此,当您创建标记时,svn无需复制外部链接的实际文件。 相反,它只是复制“注释”。 如果您执行了您的tags/1.0.1目录的签出(或者如果已经在本地签出了更新),那么您会注意到它会正确地拉下相关的外部,即使这些文件在工作存储库中不存在。

编辑:

啊,我终于看到了这个问题。 您可以在根目录中而不是在trunk目录中设置外部。

查看svn的最好方法是它只是一个文件系统,trunk,tags和branches的整个想法只是概念性的想法,每个目录与下一个目录没有什么不同。

因此,当您将trunk复制到tags目录时,外部属性不会被传输,因为它们不是trunk目录的一部分(它们只表示将外部项目放在trunk中)。 要解决此问题,应从根目录中删除外部属性并将其添加到trunk。 下次创建标记时,应传输外部属性。

以下命令:

svn propget svn:externals file:///Z:/Projects/workB/trunk

应该输出:

file:///Z:/repos/repoA/trunk/lib lib 

你的期望是正确的。 svn copy必须创建源对象的100%副本,即 - 外部定义(和内容)必须出现在标记中

  1. 检查svn ls -v -R file:///Z:/repos/repoB/tags/1.0.1
  2. 为了更容易检查和麻烦我建议转移到公开的repo-set - 用于测试你可以,fe,在Assembla免费空间创建两个或更多SVN-repos

与问题说明无关:按照惯例,标记用作代码冻结点 (稍后可以从任何一点获得完全相同的代码),但这意味着,您还必须将所有外部锁定到创建标记的状态。 repos / repoA / trunk / lib是HEAD修订版,随着时间的推移发生变化,标记1.0.1的相应修订版(链接标记rev-lib rev)将丢失。 阅读PEG修订版

编辑

经测试的Assembla repo扩展在trunk中。 测试失败:

>svn co https://subversion.assembla.com/svn/subversion-troubleshoot-b/trunk .
A    core_mod.txt
Checked out revision 4

只有,我还要检查/ lib文件夹

EDIT2

对于subversion-troubleshoot-b repo:修复应用于定义,创建正确编写的标记( 1.0.1 ),外部绑定到PEG修订

查看主干和标签结帐之间的差异

z:\>svn co https://subversion.assembla.com/svn/subversion-troubleshoot-b/
...

Fetching external item into 'subversion-troubleshoot-b\trunk\lib':
A    subversion-troubleshoot-b\trunk\lib\lib01.txt
Checked out external at revision 4.

Fetching external item into 'subversion-troubleshoot-b\tags\1.0.1\lib':
A    subversion-troubleshoot-b\tags\1.0.1\lib\lib01.txt
Checked out external at revision 2.

Checked out revision 7.

如果您稍后将更改链接仓库中的lib - trunk将获取文件夹的最新内容,1.0.1 - 将始终与subversion中的lib的修订版本2进行故障排除

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM