在SVN中导入项目的正确方法?

时间:2012-04-17 16:11:07

标签: svn

我有一个关于如何将项目导入Subversion存储库的问题。我通过谷歌搜索找到了很多答案,但我无法理解它背后的逻辑。

我理解的步骤是:

  1. 创建一个包含三个子目录的项目目录:branches,tags和trunk。

  2. 将所有代码放在主干下。

  3. 运行命令:

    svn import project_dir file:///repository_name/project -m "First Import"

    其中project_dir包含三个子目录。

  4. 在此之后,我需要再次检查我的代码到另一个目录:

    1. svn checkout file:///repository_name/project/trunk new_project_dir

    2. 继续处理new_project_dir。

    3. 在我看来,我们只创建了一次project_dir并忽略它。

      我的问题是:

      1. 我将代码签出到new_project_dir之后,旧的project_dir仍然有用吗?或者只是给SVN布局?

      2. 我们是否需要处理另外两个子目录:我们自己的分支和标签(例如,检查那里的内容)?或者仅供SVN内部使用?如果是SVN内部使用,为什么SVN不能自动为我们创建?

2 个答案:

答案 0 :(得分:4)

如果需要,您可以直接在SVN中创建布局;在您的问题中使用步骤3)使其更容易,因为它允许一气呵成。如果您遵循它,导入后不需要该初始文件夹。实际上,您从中导入的文件夹不在版本控制之下,因此在那里进行的更改不会将其返回到存储库

至于布局:习惯这样做,但SVN没有施加限制:您可以按照自己的方式组织项目。传统的逻辑是:

  • trunk表示最新的已知工作副本
  • branches有子文件夹,表示各种开发工作(可能由不同的人) - 例如对于特定的错误修复。您不需要更改主干或其他分支就可以使用它,然后在准备好时将更改合并到主干。
  • 标签是主干的标记版本,用于表示特定时间/阶段的主干状态 - 这样可以轻松定位属于同一版本的内容,例如,而不必记住多个版本号

答案 1 :(得分:1)

旧的project_dir只是为SVN提供布局。 代码被复制到存储库中,但SVN只读取此目录和文件,而不是触及它们。因此,它不是“工作副本”。

结帐到新位置后,它会包含代码和svn元数据,这会让魔术发生。

AFAIK主干,标签和分支只是一个命名约定。 SVN不需要它们,您将来可能需要它们。如果您不计划分支或标记,则可以直接将文件导入root。