Subversion仓库工作副本结构的最佳实践是什么?

4

我刚开始学习如何使用Subversion构建我的Web应用程序,所以请耐心等待。

这是我正在设置的方法:

  • 我的一个域将托管所有项目的存储库。我有标准的tags/branches/trunk结构。这是在公共文件夹中,因此其他开发人员可以访问它。
  • 我将在我的实时服务器上有一个包含每个应用程序发布的文件夹,并且我将在Web目录中有一个符号链接指向当前发布。这样,当我发布应用程序的更新时,我会将其导出到发布目录,然后切换符号链接,以便更改立即在线上生效。

这是我的问题:

对于项目的本地工作副本,最佳结构是什么?我将经常在分支和主干上工作,所以是否应该检出整个存储库结构(tags/trunk/branches),还是只需将主干和每个分支单独检出到不同的文件夹中?

另外,如果我关于如何设置它的任何说法似乎奇怪或错误,请告诉我(我是新手!)。

5个回答

2

1

我喜欢使用--depth immediates对整个代码库进行稀疏检出。然后,我会将工作副本的某些部分“加深”。

svn update --set-depth somedepth

为了进入我想要工作的部分,您还可以使工作副本的一部分再次“变浅”,以获得磁盘空间。

我不喜欢使用 svn switch,因为曾经有过部分切换工作副本的不良经历。当遇到未版本化文件阻碍已版本化文件时,切换将在中途出错等等。这可能会让人感到困惑。


0
如果我是你,我也会考虑在实时服务器上拥有一个具有标准和有意义名称的工作区,其中包含当前(如果您喜欢,则为最新)版本,并且这将是中央存储库中发布文件夹的检出。然后,您只需要执行“svn update”而不是更改到不同版本的符号链接。这样可以节省服务器空间,因为存储库会将您的档案全部压缩起来。
为了清晰起见:如果您的svn存储库具有以下典型结构:
/ trunk
/src
/bin
/docs
/scripts

/标签

/released

你可以使用这个文件夹来存储你的发布版本,或者像我们一样,如果你必须保留所有归档文件(否则对源文件进行版本控制就足够了),你可以有一个单独的二进制归档文件库。

因此,你的生产服务器将拥有一个名为“release”(或其他名称)的工作区,它是http:///tags/released的检出。这样,你只需在服务器上的工作区运行svn更新,你的应用程序就指向了最新的发布版本。希望这能帮到你。

对于本地工作区,如果你很新手并且担心提交错误,那么一次性检出整个结构并仅更新你要提交和需要更改的内容是可以的。上面的其他建议也是有效的。你可以查看任何给定文件夹的顶级目录结构,但请确保保持名称一致以避免混淆。

加油吧 :-)


0

如果你真的想要,你可以查看整个代码库。这取决于你。就我个人而言,我只会检查我正在积极工作的部分。这样,“svn update”不会花费太长时间,并且我的硬盘上占用的空间也会更少。至于在代码库中切换位置,有一个特殊的命令:“svn switch”(缩写为“svn sw”)。使用“svn help switch”或查看链接获取更多信息:

http://svnbook.red-bean.com/en/1.1/ch04s05.html


谢谢Michael,这似乎是最合乎逻辑和最容易实现的方案。 - James Skidmore

0

同意- 保留你正在工作的分支是最好的想法。 svn switch 的唯一问题是,如果你最终得到一个真正的本地副本,你将需要使用 --relocate 选项在不同的仓库之间切换。

如果你需要真正开始分发你的代码库克隆,你可以看看 git。Git 将允许你保留完整的本地副本,轻松地在分支之间移动,并将你的更改集推回“主”存储库或其他克隆。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接