gpt4 book ai didi

svn - 使用符号链接(symbolic link)在主干和分支之间切换

转载 作者:行者123 更新时间:2023-12-04 19:46:50 27 4
gpt4 key购买 nike

(这个问题让我在 SuperUser 上获得了风滚草徽章,但我被建议改为在这里尝试)

我正在我的 LAMP 开发服务器上的一个主要分支上工作,但我经常需要对主干进行次要但紧急的更新。

  • 我想为我所在的任何工作副本使用相同的本地 url(不想要多个站点 - 懒惰、书签、维护。)
  • 我不想为了可以切换到主干五分钟而必须在分支中提交未完成的工作。
  • 我正在使用 subversion,所以我没有 git stash 的等价物。

我正在尝试通过符号链接(symbolic link) (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 似乎可以解决所有问题,但我的脑海中响起了警钟。

这是对符号链接(symbolic link)的合理使用,还是我只是在为将来避免问题?

最佳答案

我广泛使用符号链接(symbolic link)来获取公共(public)库的源代码。共享库发生变化,酷每个项目都获得最新代码。我用这种方式管理了很多项目,这似乎非常合理。

直到我意识到符号链接(symbolic link)库中存在严重问题。好吧,改源码大家受益。 20 hudson 之后构建,你开始思考,啊,这不是一个好主意,如果 4 年前的一个项目使用符号链接(symbolic link)失败了怎么办......

我们删除了代码中的依赖项,为什么不删除我们的部署环境...

全心全意地,不,从长远来看,使用符号链接(symbolic link)并不是一个好主意,是的,应该敲响警钟。

有哪些选择?

仍然使用符号链接(symbolic link),我会为每个独特的项目分支链接库并引用它们。这仍然意味着链接库,并且当您在分支和主干之间切换时也很头疼。到了我刚刚完全删除符号链接(symbolic link)的地步。

我现在有两种方法,第一种是为库创建一个 eclipse 库项目,并从我的其他项目中引用它。另一个是我创建一个 Jar 或 Swc(flash lib)并将它们作为依赖项直接导入我的项目中。如果项目的源代码发生更改,那么我可以更新项目或重新导入基于 hudson 构建的库。

我的场景不使用 Appache,所以我在那里没有帮助,但通常使用符号链接(symbolic link),尤其是在 SVN 中应该远离项目工作。

此外,我认为对符号链接(symbolic link)的更改不是版本化的。它们是静态的,您无法跟踪它们的变化。 (如果我在这一点上错了,请纠正我)。如果我是对的,他们也不会在不同的存储库之间旅行或工作。

编辑2

根据评论,当我想从 apache 为项目的主干和分支提供服务时,这可能会有所帮助,我将使用 apache 别名。当然你可能有 uri 问题,所以它可能不起作用,但它是一个替代尝试。这又完全取决于您的设置(我猜我遗漏了一些关于符号链接(symbolic link)如何为您工作的信息)。

>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

您甚至可以将本地主机设置为仅引用 fooTrunk,或者可能使用不同的端口、虚拟主机(我不太熟悉)。

关于svn - 使用符号链接(symbolic link)在主干和分支之间切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11879897/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com