2

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

我理解的步骤是:

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

  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

2 回答 2

4

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

至于布局:这是习惯性的,但 SVN 并没有强加限制:您可以按照您想要的方式组织您的项目。传统的逻辑是:

  • trunk表示最新的已知工作副本
  • branches有表示各种开发工作的子文件夹(可能由不同的人)——例如,用于特定的错误修复。您在不受主干或其他分支更改影响的情况下工作,然后在准备好时将更改合并到主干。
  • 标签是主干的标记版本,用于表示主干在特定时间/阶段的状态——这是为了便于定位属于同一版本的内容,例如,而不必记住多个版本号
于 2012-04-17T16:24:39.370 回答
1

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

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

AFAIK 主干、标签和分支只是一个命名约定。SVN 不需要它们,您将来可能需要它们。如果您不打算进行分支或标记,则可以将文件直接导入根目录。

于 2012-04-17T16:19:20.720 回答