SVN存储库创建问题
我正在使用当前命令签出设计的当前版本:SVN存储库创建问题,svn,repository,Svn,Repository,我正在使用当前命令签出设计的当前版本: svn checkout svn+ssh://test@example.com/mainrepository/trunk/projects/design1 . 这很好,我对实现做了一些实质性的修改 我想在SVN中保存一份此里程碑的副本。换句话说,, 我想将当前版本签入自己的目录,即“design2”: 在这样做时,我希望能够像上面一样检查这个版本 svn checkout svn+ssh://test@example.com/mainreposito
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,但我从未创建过新的目录/存储库
对于一个新的实施,所以任何帮助将不胜感激 这听起来像是应该单独制作的。您不希望从事
project1
工作的人员也必须签出project2
的所有代码(如果他们在主干级别签出,他们会这样做)
看起来您可能将所有项目都保存在一个存储库中,我不会这么做。在这一点上,您正在颠覆修订控制的一些有用性。这听起来像是应该单独制定一个版本。您不希望从事
project1
工作的人员也必须签出project2
的所有代码(如果他们在主干级别签出,他们会这样做)
看起来您可能将所有项目都保存在一个存储库中,我不会这么做。此时,您正在破坏修订控制的某些有用性。通常,如果您的项目是以分支、标记和主干(或类似内容)为结构的,您可以为编辑创建子项目或子目录,然后将其与主干(或工作项目)合并
这将智能地复制文件,因此当您只能下载编辑,而不能再次下载整个项目时…通常,如果您的项目是以分支、标记和主干(或类似内容)为结构的,您可以为编辑创建子项目或子目录,然后将其与主干(或工作项目)合并
这将智能地复制文件,因此当您只能下载编辑,而不能再次下载整个项目时…我假设您希望创建一个新分支,即您希望
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
),在单独的工作副本中签出该分支,然后进行更改。在这种情况下,这是不可能的,因为您已经在第一个工作副本中对新分支进行了更改
请注意,存储库中的布局不遵循
. 这不一定是个问题,但我建议您在未来的项目中遵循惯例。我假设您希望创建一个新分支,即您希望
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
),在单独的工作副本中签出该分支,然后进行更改。在这种情况下,这是不可能的,因为您已经在第一个工作副本中对新分支进行了更改
请注意,存储库中的布局不遵循
. 这不一定是个问题,但我建议您在将来的项目中遵循惯例。看起来您的布局有点混乱。您有一个名为main repo的存储库,它下面有分支标记和主干。这是非常非常标准的。但是看起来主干下有多个项目?它们是否依次有分支、标记和主干目录?它们是一起构建/标记并发布的还是单独发布的?看起来您的布局有点混乱。您有一个名为main repo的存储库,它下面有分支标记和主干。这是非常非常标准的。但是看起来主干下有多个项目?它们是否依次有分支、标记和主干目录?它们是一起构建/标记并发布的还是单独发布的?非常感谢您提供的详细答案。我会试试看它是否有效!当我进入svn状态时,我得到以下输出:svn:warning:“.”不是工作副本。还有当我说“svn公司svn”+ssh://server.ac.uk/mainrepository/trunk/projects/design2“我被告知包含工作副本管理区域的svn:Directory'/home/projects/revision/.svn'丢失。不知道这意味着什么…@Heinz:如果design1文件夹是由
svn checkout
命令创建的,那么您不应该得到这些错误。我只能假设事实并非如此,而且您仍然对基本的SVN概念感到困惑。在尝试处理更高级的主题(如分支:谢谢)之前,最好先阅读SVN书籍的前两章