我已经阅读了相当多的Red Bean Software SVN Book,以及SO中的一些问题,但我想确保我在第一次循环之前以正确的方式解决这个问题.我开始使用它.它是否正确?
安装SVN.
在/ usr/local/svn创建SVN存储库.目录结构如下所示:
-- conf -- db -- format -- hooks -- locks -- README.txt
通过命令行为存储库组织(包括项目和供应商)创建文件夹.
-- conf -- db -- format -- hooks -- locks -- projects -- project_name -- vendor -- trunk -- branches -- tags -- project_name -- vendor -- trunk -- branches -- tags -- README.txt
在正确的项目名称下将供应商代码签出到供应商文件夹中.
在正确的项目名称下将供应商代码导出到trunk中(不需要合并,因为我还没有项目主干文件).
在/ svnroot/conf/passwd和/svnroot/conf/svnserve.conf中创建用户/权限.
确保svnserve正在运行,并在我的本地SVN客户端(TortoiseSVN)上,检查我需要的项目的主干.
我不需要通过公共URL提供服务,所以我没有为Apache配置.服务器不在我们的网络中,而是我们租用的专用CentOS盒子.感谢您的任何想法和建议.
编辑:
我想我很困惑,因为我没有代码或项目开始,所以我从供应商的代码开始新鲜.我是否需要在服务器上的某个位置创建一个目录结构,其中包含我的project_name w/vendor,trunk,branches和tags子文件夹,将其导入我的repo,然后将代码从供应商导入到vendor文件夹中?我的想法是,我可以从供应商那里获得更新,然后将这些更新与我对我的主干所做的任何更改合并.
通过命令行为存储库组织(包括项目和供应商)创建文件夹.
您是指通过在subversion intallation目录中创建目录来创建存储库结构吗?那是非常错的.
您必须通过svn mkdir
命令而不是通过文件系统创建必要的文件夹.
在/usr/local/svn
您拥有Subversion存储库的物理实现时,您必须仅通过客户端访问它,而不是"手动"触摸它.
例如,使用file:// URL方案
svn mkdir file:///usr/local/svn/projects -m "Parent dir for projects created"
你似乎有大多数正确的想法,但你的术语有点不对劲.这将真正混淆SVN人,因为你在SVN的上下文中使用具有特定含义的词.扩展达维德说的话:
2)通过执行类似的操作来创建存储库svnadmin create /usr/local/svn
.
3)创建您的文件夹.您不需要(或想要)列表中不属于下方的部分projects/
.这些其他目录是SVN用于跟踪修订的内容,它们实际上并不在存储库中.如果在系统的某个位置创建包含project_name/
子树的目录层次结构,则可以svn import
根据需要多次运行该目录,每个项目运行一次(每次为目标指定一个不同的名称).这将创建您的目录结构.
4)而不是"结账",我认为你的意思是"导入"或"签入"(在SVN用语中通常称为"提交",但是"checkin"将被理解).导入会将供应商文件添加到存储库.Checkout意味着"为我创建此版本化目录的本地副本",称为"工作副本".团队中的每个开发人员都应该拥有自己的工作副本.在开发人员对其工作副本进行更改之后,他们svn commit
会将更改发送到存储库.团队中的其他开发人员将运行svn update
以将这些更改从存储库中获取到他们自己的工作副本中.
5)我最近没有读过SVN书,但我认为它指示你将供应商分支的版本复制到主干,而不是导出它.以SVN术语导出意味着取消对目录树的版本,这显然不是您想要的.
如果您在步骤2之后立即执行步骤6和7,您可能会发现更容易,因为这样您可以使用svn://
协议访问存储库以获取剩余步骤,而不是file://
Davide建议的,这只适用于本地计算机.