【发布时间】:2009-02-09 18:09:44
【问题描述】:
首先,我查看了以下页面并没有完全得到我的答案: how-would-you-organize-a-subversion-repository-for-in-house-software-projects 和 how-do-you-organize-your-version-control-repository
我也看过Pragmatic Version Control using Subversion的第8章。
他们都有很好的建议,但我很难将其与我的需求联系起来。
基本上,我想为我们的网络服务器组织代码。我们有一个 $WEBROOT/htdocs 和 $WEBROOT/cgi-bin。在我们的 htdocs 目录下,我们有 $WEBROOT/htdocs/js 和 $WEBROOT/htdocs/css 用于 java 脚本和样式表。
我们的“项目”并不是真正的项目,而是一小段代码——可能是 Perl 脚本、java 脚本文件和样式表。我们可能有大约一百个这样的小“项目”,它们几乎相互独立,但都存在于同一个网络服务器上的同一个 $WEBROOT 下。
我们的代码还没有被颠覆,但我希望它是——我只是在有效地组织它时遇到了麻烦。如果需要,我们可以有多个 svn 存储库,但是如果每个存储库只有 3-10 个元素,那对我来说似乎是一种浪费。
我认为可以这样工作:如果我编写一个脚本来计算网络服务器上正在运行的进程(为了一个例子)。假设我有一个 perl 脚本、一个 js 文件和一个 css 文件。我可以将“项目”命名为 webserver_processes,并将其签入存储库:
/svnrepo/webserver_processes/trunk
在树干下,我可以:
htdocs/html/webserver_processes
htdocs/js/webserver_processes
htdocs/css/webserver_processes
cgi-bin/webserver_processes
我在这个“项目”中没有任何静态 html 文档,但如果我有,它们会进入“html”目录。
我在这种结构中看到的好处是,我可以一次签出一个“项目”,而不会真正影响 Web 服务器上的任何其他内容。缺点(也许它不是真正的缺点)是部署。我必须一次从存储库部署 1 个项目。我看不出如何使用这种方法创建具有我的 $WEBROOT/htdocs 和 $WEBROOT/cgi-bin 结构的工作副本。
另一种选择:
我可以像这样创建一个 svn 存储库:
/svnrepo/webcode/trunk
trunk 下将是我的网络服务器上的所有代码,在这两个目录中:
htdocs
cgi-bin
最大的缺点是,对于 1 个元素的小代码更改,我必须检查我的 Web 环境中的每一段代码。好处(有点)是我可以在我们的 Web 服务器上执行“svn update”以获取提交到存储库的任何更改。
也许我只是让这变得比它应该的更复杂,但是有人对我如何在颠覆中有效地组织我的代码有任何建议吗?
提前非常感谢!
布赖恩
【问题讨论】:
-
看起来你的两个选项是一样的,除了你在一个中命名了顶级目录 webserver_processes 而在另一个中命名了 webcode?span>
-
第二个选项是我的 $WEBROOT 下的所有内容都是 subversion 中的单个项目。第一个选项是我们处理的每个“项目”都是它自己在 subversion 存储库中的项目。
标签: svn code-organization infrastructure svn-organization