问题标签 [svn-organization]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
5887 浏览

svn - 组织许多小项目的颠覆存储库的最佳方式

首先,我查看了以下页面并没有完全得到我的答案: how-would-you-organize-a-subversion-repository-for-in-house-software-projectshow-do-you-组织你的版本控制存储库

我还查看了使用 Subversion 的实用版本控制的第 8 章。

他们都有很好的建议,但我很难将其与我的需求联系起来。

基本上,我想为我们的 Web 服务器组织代码。我们有一个 $WEBROOT/htdocs 和 $WEBROOT/cgi-bin。在我们的 htdocs 目录下,我们有 $WEBROOT/htdocs/js 和 $WEBROOT/htdocs/css 用于 java 脚本和样式表。

我们的“项目”并不是真正的项目,而是一小段代码——可能是 Perl 脚本、java 脚本文件和样式表。我们可能有大约一百个这样的小“项目”,它们几乎相互独立,但都存在于同一个网络服务器上的同一个 $WEBROOT 下。

我们的代码还没有被颠覆,但我希望它是——我只是在有效地组织它时遇到了麻烦。如果需要,我们可以有多个 svn 存储库,但是如果每个存储库只有 3-10 个元素,那对我来说似乎是一种浪费。

我认为可以工作的是这样的:如果我编写一个脚本来计算网络服务器上正在运行的进程(为了一个例子)。假设我有一个 perl 脚本、一个 js 文件和一个 css 文件。我可以将“项目”命名为 webserver_processes,并将其签入到存储库中:

在树干下,我可以拥有:

我在这个“项目”中没有任何静态 html 文档,但如果我有,它们会进入“html”目录。

我在这种结构中看到的好处是我可以一次签出一个“项目”,而不会真正影响 Web 服务器上的任何其他内容。缺点(也许它不是真正的缺点)是部署。我必须一次从存储库部署 1 个项目。我看不出如何使用这种方法用我的 $WEBROOT/htdocs 和 $WEBROOT/cgi-bin 结构创建工作副本。

另外一个选项:

我可以像这样创建一个 svn 存储库:

在主干下将是我的网络服务器上的所有代码,在这两个目录中:

最大的缺点是,对于 1 个元素的小代码更改,我必须检查我的 Web 环境中的每一段代码。好处(有点)是我可以在我们的 Web 服务器上执行“svn update”来获取提交给存储库的任何更改。

也许我只是让这变得比它应该的更复杂,但是有人对我如何有效地在颠覆中组织我的代码有任何建议吗?

提前谢谢了!

布赖恩

0 投票
2 回答
922 浏览

svn - 组织一个包含数千个元素的 Subversion 存储库

开始之前:我在许多论坛(包括 Stack Overflow - 是的,有很多关于组织 svn 的 SO 问题)、搜索 Google 和阅读文档(我拥有几本 Subversion 书籍)都花了很长时间。我还没有找到在 Subversion 中组织代码库的好方法。我们目前使用 RCS 作为我们的修订控制系统,所有内容都存储在 1 个 RCS 目录中 - 我知道这很丑 - 这就是为什么我正在努力实现更好的东西。我也经常使用 Subversion,所以我知道它的功能以及它是如何工作的。几个月来我一直在犹豫问这个问题,因为它不完全与编程相关,但由于我无法找到解决方案,还有什么更好的地方来问我的问题!

在我脑海中使事情复杂化的是颠覆术语“项目”。如果我想在 subversion 中管理一个 java 项目,这对我来说非常有意义:所有组合成一个 jar 文件的 java 文件都可以被认为是一个“项目”——它们都属于一起。但是,在我们的环境中,我看不到定义什么是“项目”的简单方法。我们有超过 4,000 个程序,而且它们几乎都是相互独立的。其中许多是 shell 脚本或 perl 脚本。我们的一些脚本使用通用的“实用程序”或“库”脚本,但在大多数情况下,所有代码对象都是独立的。

我们环境中的一个“项目”可能涉及程序 A、B 和 C,以及配置文件 AA。另一个项目可以使用程序 C、D 和 E,以及配置文件 BB。另一个项目可能只是更改配置文件 AA,或者可能是程序 B。没有办法对哪些程序或文件属于一个组进行分类。正因为如此——我不知道如何将我们的代码组织成颠覆。我可以将所有内容都放入主项目主干中,但检查工作副本意味着检查所有 4,000 多个元素。

给出一些上下文,这是针对数据仓库的。需要所有 4,000 多个代码元素才能使仓库发挥作用。也许某个业务需求需要更改在一些元素中访问的列,而另一个业务需求需要更改一些其他元素(可能与其他项目中的一些相同)。

也许 Subversion 不是最适合我们的,尽管我必须相信它可以工作。我们已经为我们的 Web 代码和 Java 程序提供了一个 Subversion 服务器,它工作得很好,因为有很容易定义的项目。我只是不知道如何组织我们的主要代码库。

希望其中一些有意义......提前感谢您的智慧!