(这个问题在SuperUser为我赢得了一个风滚草徽章,但我建议在这里尝试一下)
我正在LAMP开发服务器上的一个主要分支上工作,但我经常需要对主干进行小的但是紧急的更新。
我正在尝试从符号链接(foo)提供本地站点,然后我可以将其重写为指向分支或主干。这允许我向前和向后切换而不用担心未提交的更改,意味着我可以使用相同的书签,路径别名等
# svn working copies for trunk and branch
/sites/footrunk/
/sites/foobranch/
/sites/foo -> foobranch #symbolic link
# eg to switch to trunk
cd /sites;
ln -s footrunk foo_tmp && mv -fT foo_tmp foo
cd -;
sudo service apache2 restart
我的问题是apache在切换后偶尔会立即混淆,并且似乎持有空的,旧的或重复的(不能重新声明php中的类错误?)版本的文件。重新启动apache似乎可以解决所有问题,但是脑子里还有警告声。
这是合理使用符号链接,还是我只是为将来存下问题?
答案 0 :(得分:3)
我广泛使用符号链接来获取公共库。共享库发生变化,每个项目都会获得最新的代码。我以这种方式管理了许多项目,看起来非常合理。
直到我意识到符号链接库中存在严重问题。好的,改变每个人的好处的源代码。 20哈德森后来建造并且你开始思考啊,是的,这不是一个好主意,如果一个项目4年前,使用符号链接失败了...
我们删除代码中的依赖项,为什么不删除我们的部署环境......
全心全意,不,从长远来看,使用符号链接并不是一个好主意,是的警告应该会消失。
有哪些替代方案?
仍然使用符号链接我将为每个独特项目分支链接库并引用它们。这仍然意味着链接库,当您在分支和中继之间切换时也会产生头痛。它已经到了我刚刚完全删除了符号链接。
我现在有两种方法,第一种是我为库创建一个eclipse库项目,并从我的其他项目中引用它。另一个是我要么创建一个Jar或Swc(flash lib)并直接将它们作为依赖项导入我的项目中。如果项目的源代码发生了变化,那么我可以更新项目或重新导入在哈德森上构建的库。
我的场景不使用Appache,所以我没有帮助,但一般情况下使用符号链接,特别是在SVN中应该远离项目工作。
此外,我认为对符号链接的更改不是版本化的。它们是静态的,您无法跟踪它们的变化。 (如果我在这一点上错了,请纠正我)。如果我是正确的,他们也不会在不同的存储库之间旅行或工作。
修改2
根据评论,也许这可能会有所帮助,当我想从apache服务项目的主干和分支时,我将使用apache别名。当然你可能有uri问题,所以它可能不起作用,但它可以替代尝试。这又完全取决于你的设置(我猜我错过了sym链接如何为你工作)。
>touch /etc/apache2/other/emiles.conf
>pico /etc/apache2/other/emiles.conf
..添加以下内容。
Alias /fooBranch "/Users/emile/fooBranch"
Alias /fooTrunk "/Users/emile/fooTrunk"
<Directory "/Users/emile/fooBranch">
Options +Indexes +MultiViews +FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
#copy above with "/Users/emile/fooTrunk"
重新启动appache,然后访问两者
http://localhost/fooBranch
or
http://localhost/fooTrunk
您甚至可以将localhost设置为仅引用fooTrunk,或者使用不同的端口,虚拟主机(我不熟悉)。