我在这里读了很多Q / A关于SVN repos中目录“branch”,“tag”和“trunk”的含义,现在我想我明白了,我正在尝试实现它
我使用Virtualmin管理我的服务器,它通过其Web GUI为我创建了回购。但是,一旦创建我的repo是空的,所以我想我需要自己创建目录结构并提交它。一旦完成,我将项目的文件放在trunk中,当我处于稳定版本状态时,我应该将它分支到branch / xxx(这将是我开发中的一个保存点),以及标签/ xxx(将是我的开发版)。
如果我在这里是正确的,那么我用Tortoise切换到我的新标签,这只是在我的下一次提交中将被更改的。顺便说一下,使用Tortoise,我是否需要右键单击当前标记目录,还是我仍然可以直接从项目的根文件夹提交/恢复?
我当前的项目有一个配置文件定义了几个绝对路径 - 可能是错的但我没有找到任何方法来避免它。因为我希望能够看到我的项目从任何分支/主干运行,这是否意味着我需要为每个版本配置不同的配置文件?如果是这样,我应该将此文件添加到忽略列表中吗?我的意思是什么是好的做法?
额外的问题:如果我想在这种情况下使用Composer,我的composer.json和vendor目录应该在哪里?
谢谢!
答案 0 :(得分:8)
你会混淆标签和分支。标签不应该被修改。它们通常是在您每次发布应用程序时(从主干或分支机构)创建的。
分支用于保持正在进行的工作。
您应该将trunk目录签出到工作副本。要切换到分支,请使用switch命令。没有理由为每个分支都有单独的配置文件,在同一个位置,可以指向您想要的任何内容:thr trunk,分支,甚至是标记。关键点是工作副本的根目录应该是项目的根目录:
因此,假设您的项目文件包含以下文件:
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
所以它完全相同,并且配置文件没有理由包含不同的文件路径。