6

我在这里阅读了很多关于 SVN 存储库中目录“branch”、“tag”和“trunk”含义的 Q/A,现在我想我理解了,我正在尝试实现它。

我使用 Virtualmin 来管理我的服务器,它通过它的 Web GUI 为我创建了存储库。但是,一旦创建我的仓库是空的,所以我想我需要自己创建目录结构并提交它。完成后,我将项目的文件放在主干中,并且由于我处于稳定的版本状态,我应该将其分支到 branch/xxx (这将是我的开发中的一个保存点)和 tags/xxx (这将是我的开发版本)。

如果直到这里我都正确,那么我将使用 Tortoise 切换到我的新标签,这就是我下一次提交中将更改的唯一标签。顺便说一句,使用 Tortoise,我需要右键单击当前标签目录,还是仍然可以直接从项目的根文件夹提交/恢复?

我当前的项目有一个配置文件定义了几个绝对路径 - 也许它是错误的,但我还没有找到任何方法来避免它。由于我希望能够看到我的项目从这些分支/主干中的任何一个运行,这是否意味着我需要为每个版本使用不同的配置文件?如果是这样,我应该将此文件添加到忽略列表中吗?我的意思是什么会被认为是好的做法?

额外的问题:如果我想在这种情况下使用 Composer,我的 composer.json 和 vendor 目录应该在哪里?

谢谢!

4

1 回答 1

8

你混淆了标签和分支。标签不应该被修改。它们通常是在您每次发布应用程序时创建的(从主干​​或分支)。

分支用于保存进行中的工作。

您应该将主干目录签出到工作副本。要切换到分支,请使用 switch 命令。没有理由为每个分支都有单独的配置文件,因为您的工作副本在同一位置可以指向您想要的任何内容:主干、分支,甚至是标签。关键是工作副本的根应该是你项目的根:

因此,假设您的项目文件包含以下文件:

index.php
config.txt
some_folder
    foobar.php

您的仓库将具有以下布局:

trunk
    index.php
    config.txt
    some_folder
        foobar.php
branches
    maintenance_1.0
        index.php
        config.txt
        some_folder
            foobar.php
    feature_refactor_index_page
        index.php
        config.txt
        some_folder
            foobar.php
tags
    v1.0
        index.php
        config.txt
        some_folder
            foobar.php

您的工作副本将是:

MyProject --> references trunk
    index.php
    config.txt
    some_folder
        foobar.php

如果您想在功能分支上工作,请切换到该分支,然后您的工作副本将是

MyProject --> references feature_refactor_index_page
    index.php
    config.txt
    some_folder
        foobar.php

所以它完全一样,配置文件没有理由包含不同的文件路径。

于 2013-02-09T13:43:31.557 回答