Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Svn 不同的项目';存储库和开发机器上的目录结构_Svn_Version Control_Tortoisesvn - Fatal编程技术网

Svn 不同的项目';存储库和开发机器上的目录结构

Svn 不同的项目';存储库和开发机器上的目录结构,svn,version-control,tortoisesvn,Svn,Version Control,Tortoisesvn,我正在做一个大型项目的一个模块。存储库的目录结构设计为每个模块都有单独的分支/标记/主干文件夹 module 1 - branches - tags - trunk module 2 - branches - tags - trunk module 3 - branches - tags - trunk 在开发机器(Windows XP)上,我们必须将来自不同模块的文件合并到一个完全不同的文件夹结构中(即使来自不同模块

我正在做一个大型项目的一个模块。存储库的目录结构设计为每个模块都有单独的分支/标记/主干文件夹

module 1
    - branches
    - tags
    - trunk

module 2
    - branches
    - tags
    - trunk

module 3
    - branches
    - tags
    - trunk
在开发机器(Windows XP)上,我们必须将来自不同模块的文件合并到一个完全不同的文件夹结构中(即使来自不同模块的文件也在同一目录中)

现在我的问题是如何保持这种类型的开发项目文件夹处于版本控制之下?现在我要做的是,我对我的模块进行单独的签出,每当我更改开发文件夹中的任何内容时,我都会将文件复制到签出文件夹,然后从那里提交。但是我需要一些东西,以便我可以直接从开发文件夹提交,就像在当前设置中一样,我可能会错过一些东西

编辑: 注意:我无法更改存储库的目录结构。

这不是问题的答案,更多的是旁注,太长了,无法发表评论

这是一个错误的项目结构。既然你已经在你的电脑上合并了模块,你也应该在SVN中合并。应该是这样的:

- branches
    project
      module1
      module2
      module3
- tags
    project
      module1
      module2
      module3
- trunk
    project
      module1
      module2
      module3

或者,将module2/3作为module1 svn的外部(例如,

正如Krom指出的,这可能不是在repo中构造代码的最佳方式,但如果您无法更改,我建议使用一个简单的批处理脚本为您进行签出

这样,您只需运行脚本即可从多个位置签出所需的所有文件,并且仍将保留svn信息

然后,当您更改工作副本上的任何文件时,您所要做的就是将其签出,无需担心它们在回购协议上的位置


顺便说一句,该脚本甚至可以存储在svn中,供其他开发人员使用,也可用于构建服务器等等。

我有一个类似的项目,可以通过svn外部运行。创建一个主项目,它没有自己的文件,但有一个svn:externals声明,如:

^/module1/trunk module1
^/module2/trunk module2
^/module3/trunk module3

如果您签出主项目,您所需的目录结构将随之签出。

事实上,我无法更改主项目,因为我没有足够的权限这样做。我还更新了问题,将其包括在内。