2012-04-17 85 views
2

我有一个关于如何将项目导入到Subversion存储库的问题。我通过Google搜索发现了很多答案,但我无法理解它背后的逻辑。在SVN中导入项目的正确方法?

我理解的步骤是:分支,标签和主干:

  1. 有三个子目录创建一个项目目录。

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

  3. 运行命令:

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

    其中PROJECT_DIR包含三个子目录。

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

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

  2. 继续在new_project_dir工作。

在我看来,我们创建的project_dir仅供使用一次而忽略它。

我的问题是:

  1. 后,我检出代码到new_project_dir,是老PROJECT_DIR仍然有用吗?或者只是给SVN的布局?

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

回答

4

如果您愿意,您可以直接在SVN中创建布局;在你的问题中使用步骤3)使得它更容易,因为它可以一次完成。如果您遵循它,则导入后不需要该初始文件夹。实际上,您从中导入的文件夹并未置于版本控制之下,因此所做的更改将不会返回到存储库

至于布局:通常这样做,但SVN不会强制限制:你可以按你想要的方式组织你的项目。传统的逻辑是:

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

谢谢。很烦人,我不能使用相同的文件夹,但总是必须创建另一个文件夹 – ericn 2013-08-29 03:03:08

1

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

在您结帐到新的位置后,它包含代码AND svn元数据,这使得魔法发生。

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

+0

从SVN的角度来看,它们都只是目录。你可以将分支合并到主干或主干中,SVN不关心。你必须关心和命名目录足够清晰,以便你理解。 – 2012-04-17 16:26:10