2009-07-29 111 views
4

我刚开始学习如何使用Subversion来构建我的Web应用程序,请耐心等待。Subversion版本库工作副本结构的最佳实践?

这里是我如何设置这一切:

  • 我的一个域名将举办我所有的项目库。我有标准标签/分支/主干结构。这是在公用文件夹中,因此可以由其他开发人员访问。
  • 我将在包含应用程序的每个版本的活动服务器上有一个文件夹,并且在Web目录中指向当前版本的符号链接。这样,当我释放应用程序更新时,我将其导出到发布目录,然后切换符号链接,以便更改立即联机。

这里是我的问题:

什么是该项目的本地工作副本的最佳结构?我将会频繁地在分支机构和主干上工作,所以我应该检查整个存储库结构(标签/干线/分支)还是只检查干线和每个分支到不同的文件夹?另外,如果有任何我说过我如何设置它似乎很奇怪或错误的方式来做到这一点,让我知道(我是新来的!)。

回答

0

如果您真的喜欢,可以查看整个存储库。随你便。就我个人而言,我只想看看我正在积极开展工作的部分。这样,“svn update”不会永远占用,而且我自己的硬盘空间也会减少。至于在存储库中的位置之间切换,有一个特殊的命令:“svn switch”(缩写为“svn sw”)。使用“SVN帮助开关”或看到该链接的详细信息:

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

+0

感谢迈克尔,这似乎是最合理和最容易实现的。 – 2009-08-29 16:18:30

0

Agreed-只保留分支你的工作是最好的主意。 svn switch的唯一呃逆是你需要使用--relocate选项在存储库之间翻转,如果你真的需要本地副本。

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

0

如果我是你,我还会考虑在包含当前(最新的,如果你喜欢的话)版本的活动服务器中有一个标准且有意义的名称的工作空间,这将是发布文件夹的签出在您的中央存储库中。那么你只需要做一个“svn update”而不是改变符号链接到不同的版本。这样可以节省你的服务器上的空间,因为存储库可以让你的档案全部摧毁。

为清楚:如果你的SVN仓库有这种典型结构:

/后备箱

/src 
/bin 
/docs 
/scripts 

/标签

/released 

你可以有这个文件夹来存储您的版本或在我们的情况是,如果你必须保存所有的档案,那么你可以有一个独立的二进制档案库(否则版本化的源文件应该是足够的)

那么,你的现场服务器将有一个工作空间称为发布(或任何),这是一个结帐的http:/// tags/released。通过这种方式,您可以在服务器上的工作区上运行svn更新,并且您的应用程序指向最新版本。希望这可以帮助。

对于本地工作空间,如果您是新手,担心提交不正确,可以一劳永逸地检出整个结构,只更新您正在提交并需要更改的内容。上述其他建议也是有效的。 YOu可以查看检查任何给定文件夹的顶级目录strcuture,但要确保始终保留名称以避免混淆。

突突走:-)

1

我喜欢做的整个仓库的sparse checkout--depth immediates。然后我使工作副本的某些部分“更深”

svn update --set-depth somedepth 

找到我想要处理的部分。您还可以使工作副本的一部分再次变浅,以获得磁盘空间。

我不喜欢使用svn switch,因为部分切换的工作副本不好的经验。当交换机遇到未受版本控制的文件时,交换机会中途出错,从而造成混乱。