我正在使用当前命令检查当前版本的设计:
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,但我从未创建过新的目录/存储库 对于新的实施,所以任何帮助将不胜感激!
答案 0 :(得分:3)
我假设您要创建一个新分支,即您希望design1
和design2
并排生活,以便它们能够分歧。
不要使用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
哪个会智能地复制文件,所以当你只能下载编辑而不是整个项目时...