繁体   English   中英

如何使用sharpsvn正确生成复杂的外部结构?

[英]How to correctly generate a complex externals structure with sharpsvn?

我使用subversion有一个非常复杂的存储库结构。 其中很大一部分与我的团队的局限性,安全性要求以及项目的依赖性有关。 这里使用的结构因此不是可选的,不能改变。

存储库结构包含以下模式:

root-|- main -|- branches
     |        |- tags
     |        |- trunk - main - plugins
     |
     |- modules -| - module1 -|- branches
                 |            |- tags
                 |            |- trunk - module1 - plugins - plugin1
                 |            |- modules - ...
                 |
                 | - module2 -|- branches
                 |            |- tags
                 |            |- trunk - module2 - plugins - plugin2
                 |            |- modules - ...

每个外部的源是一个pluginX文件夹。 目标是低一级的主干的插件文件夹(或主要的插件文件夹)。 遗憾的是,API的文档几乎不存在。 我怀疑我需要以某种方式使用propset函数但是如何指向特定的目标目录和源目录没有在我能够找到的任何地方描述,也没有找到任何示例。

编辑:每个模块可以单独拉出并独立于根项目进行处理。 我不能只为此使用root。 天啊,我甚至无法对这个问题做出恶意回应!!

在'root'文件夹中创建文件夹build并使用relative path引用解决方案中的项目,然后将其output folder所有项目配置为build\\xxx folder ,所有输出文件夹也是relative path 在主程序中,再次使用相对路径配置程序集绑定 使用这种模式,无论谁下载repo,他们都可以将项目编译到相同的根文件夹,并使用相同的configure进行调试。

对于非常复杂的依赖,例如A => B => C => D,第一次打开解决方案A,如果B / C / D未编译且未引用,则A将显示参考警告,您必须打开并编译B&C&D,然后A将工作。 但通常情况下,我们应该将B / C / D添加到解决方案A中,因此,在我们第一次打开它时不会再出现错误。

有时候,某些源代码并不是针对所有开发人员开放的,所以他们只能获得一个已编译的dll,对于那些dll,我们需要另一个文件夹(如“工具”),其中包括源代码服务器中的所有已编译程序集。 我们在解决方案中添加带有relative path file references ,并将它们配置为"Copy to local"=true

对于许多项目,我们将使用post-build或pre-build事件从某个地方加载或复制文件,所有这些都必须是相对路径。

回答我自己的问题。 我正在使用的库有一个函数,在给定该文件夹的绝对路径的情况下,为本地系统中的给定文件夹设置外部。 该库是图书馆C版本的一个端口,显然作者只是假设人们“只知道”在那里看。

暂无
暂无

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

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