2013-04-02 24 views
8

我正在PHP和Java中开发一个小应用程序。它有几个图片,CSS和JS,必须在两者中共享。Subversion版本库中的符号链接?

我不希望这些文件重复,JS和CSS必须在两个相同。所以我喜欢这个,当我在一个地方改变它时,这个改变会在另一个地方复制。

在Unix中,我们有符号链接,因此相同的文件/文件夹可以在文件系统中的多个位置“存在”。在Subversion中,我们有svn copy,但是一旦它被执行,两个副本就变得独立了。我想把它们放在一起,在一个副本中完成的提交也将应用于“其他”。

任何想法如何做到这一点?

+0

的可能的复制[会发生什么如果我添加一个符号链接到颠覆?](https://stackoverflow.com/questions/4056092/what-happens-if-i-add-a-symbolic-link-to-subversion) –

回答

15

您指的是您的帖子中的symlinks,而不是“影子链接”(我已编辑该帖子)。 Subversion可以对符号链接进行版本化,但是另一种解决方法是使用Externals,因为在Windows上Subversion不支持符号链接。

不同之处在于,如果您使用外部Subversion,则系统中实际上会有两个文件副本(指向存储库中的相同位置),而符号链接是单个文件文件系统。

+0

再次感谢,我会看看Externals。几年来我没有使用Unix,我认为影子是Mac的名字,对于Unix来说是象征性的,Windows对于.lnk来说是......或者不是大声笑! – Hikari

+5

Windows上的LNK文件是快捷方式(指向另一个文件的数据文件以及其他一些数据) - 它们不是符号链接。从Win7开始,NTFS(Windows的文件系统)具有符号链接,并且在此之前有过硬链接。 OS X的Finder具有* Aliases *,它们与概念中的Windows快捷键类似,但执行方式不同。 OS X还支持文件系统上的符号链接。他们都有不同的名字,因为他们是不同的东西 - 不要互换使用,特别是因为你知道你不了解他们! – alroc

3

你没有提到项目是如何在svn中布置的,或者你的java东西是如何构建的。这些将是很好的细节补充。

您想查看依赖关系管理 - 而不是符号链接。正如@alroc指出的那样,颠覆功能在某些平台上不起作用。

你真的不想要svn:externals。几乎所有的时候它们都是不好的交易,而且如果外部解决了同一个回购交易中的某些东西,那么它总是很糟糕。这已经涵盖了很多,The accepted answer here是一个很好的开始。

我建议你有一个回购的Java应用程序,回购的PHP的东西,然后可能是一个共同回购。然后

你的版本(JAVA)和部署(PHP)可以从仓库解决常见的回购神器(S)的相应版本(我建议你看看到关系或artifactory的)

+0

这是几个png,一个js和一个css。我正在构建一些将在PHP和JSP中使用的HTML页面,因此我将它们全部保存在一个Subversion项目中,每个项目都位于其自己的文件夹中,我不想复制这些静态文件。 – Hikari