SVN存储库创建问题

时间:2010-11-16 14:30:01

标签: svn repository

我正在使用当前命令检查当前版本的设计:

 svn checkout svn+ssh://test@example.com/mainrepository/trunk/projects/design1 .

工作正常,我对实施做了一些实质性的改变 我希望在SVN中保留这个里程碑的副本。换一种说法, 我想将当前版本签入自己的目录,即“design2”:

在这样做的时候,我希望能够像上面那样结帐这个版本

 svn checkout svn+ssh://test@example.com/mainrepository/trunk/projects/design2 .

我从未在SVN中创建新目录,所以我想知道是否必须创建 一个子库,可以按如下方式检查design2:

 su - svn
 mkdir svn+ssh://test@example.com/mainrepository/trunk/projects/design2
 svnadmin create svn+ssh://test@example.com/mainrepository/trunk/projects/design2

从我之前检出的文件创建此文件时是否存在问题?我知道在这一步之后如何处理SVN,但我从未创建过新的目录/存储库 对于新的实施,所以任何帮助将不胜感激!

4 个答案:

答案 0 :(得分:3)

我假设您要创建一个新分支,即您希望design1design2并排生活,以便它们能够分歧。

不要使用svnadmin创建新的存储库。相反,这样做:

    cd design1
    svn status # make sure everything is ready as if for a normal commit
    svn copy . svn+ssh://server.ac.uk/mainrepository/trunk/projects/design2 -m "creating new branch for design 2"

现在删除你的工作副本(它仍然指向design1并包含挂起的更改,即使它们已经提交到design2 - 是的,它很混乱,最好只删除它)。为design2创建一个新的签出,以便您可以继续进行更改和提交:

   cd ..
   rm -rf design1
   svn co svn+ssh://server.ac.uk/mainrepository/trunk/projects/design2
   cd design2

这是一种将更改提交到新分支的方法。通常,您首先要创建一个分支(svn copy url1 url2),在单独的工作副本中检出分支,然后然后进行更改。在这种情况下,这是不可能的,因为您已经在第一个工作副本中对新分支进行了更改。

请注意,您的存储库中的布局不遵循 recommended repository layout。这不一定是个问题,但我建议您遵循未来项目的惯例。

答案 1 :(得分:1)

看起来您的布局有点令人困惑。你有一个名为main repo的存储库 - 它下面有分支标签和trunk。这是非常标准的。但是看起来后备箱下面有多个项目?他们又在它们下面有分支,标签和主干目录吗?它们是一起建立/标记和发布的吗?

答案 2 :(得分:0)

这听起来应该是一个单独的branch。您不希望在project1上工作的人也必须查看project2的所有代码(如果他们在主干级别结帐,他们会这样做。)

看起来您可能将所有项目保存在一个存储库中,这不是我要做的事情。那时你正在颠覆修订控制的一些用处。

答案 3 :(得分:0)

通常,如果您的项目以分支,标签和主干(或类似的东西)结构化,您可以为您的编辑创建子项目或子目录,然后将其与主干(或工作项目)合并

svn copy /projectRoot/trunk /projectRoot/branches/edit1 

哪个会智能地复制文件,所以当你只能下载编辑而不是整个项目时...