2013-04-02 96 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