我有一个关于如何将项目导入Subversion存储库的问题。我通过谷歌搜索找到了很多答案,但我无法理解它背后的逻辑。
我理解的步骤是:
创建一个包含三个子目录的项目目录:branches,tags和trunk。
将所有代码放在主干下。
运行命令:
svn import project_dir file:///repository_name/project -m "First Import"
其中project_dir包含三个子目录。
在此之后,我需要再次检查我的代码到另一个目录:
svn checkout file:///repository_name/project/trunk new_project_dir
继续处理new_project_dir。
在我看来,我们只创建了一次project_dir并忽略它。
我的问题是:
我将代码签出到new_project_dir之后,旧的project_dir仍然有用吗?或者只是给SVN布局?
我们是否需要处理另外两个子目录:我们自己的分支和标签(例如,检查那里的内容)?或者仅供SVN内部使用?如果是SVN内部使用,为什么SVN不能自动为我们创建?
答案 0 :(得分:4)
如果需要,您可以直接在SVN中创建布局;在您的问题中使用步骤3)使其更容易,因为它允许一气呵成。如果您遵循它,导入后不需要该初始文件夹。实际上,您从中导入的文件夹不在版本控制之下,因此在那里进行的更改不会将其返回到存储库
至于布局:习惯这样做,但SVN没有施加限制:您可以按照自己的方式组织项目。传统的逻辑是:
trunk
表示最新的已知工作副本branches
有子文件夹,表示各种开发工作(可能由不同的人) - 例如对于特定的错误修复。您不需要更改主干或其他分支就可以使用它,然后在准备好时将更改合并到主干。答案 1 :(得分:1)
旧的project_dir只是为SVN提供布局。 代码被复制到存储库中,但SVN只读取此目录和文件,而不是触及它们。因此,它不是“工作副本”。
结帐到新位置后,它会包含代码和svn元数据,这会让魔术发生。
AFAIK主干,标签和分支只是一个命名约定。 SVN不需要它们,您将来可能需要它们。如果您不计划分支或标记,则可以直接将文件导入root。