2012-12-21 39 views
2

我有一個解決方案,我試圖創建第二個可執行文件。這兩個可執行文件共享大部分相同的文件,但有一些不同的,包括資源和應用程序圖標等添加爲VisualSVN的鏈接

我創建了第二個項目,以及添加的項目爲鏈接:

  1. 右對齊點擊「添加現有項目」
  2. 瀏覽它,
  3. 點擊「添加」下拉,選擇「添加爲鏈接」

作爲鏈接添加意味着它只是引用另一個文件夾中的其他文件,並且不會複製它。

現在,當我嘗試提交我的項目時,VisualSVN/SVN嘗試在它們所屬的邏輯路徑中對這些文件執行SVN添加操作,導致文件未找到的很多錯誤。它導致整個承諾失敗,併成爲屁股的主要痛苦。

有沒有一種好的方法,我可以添加鏈接到文件沒有副作用?我試圖鏈接到的所有文件都已經在相同的回購協議中。

更新

也許我應該補充什麼,我試圖完成,因爲我接受任何建議,幫助我完成它的更多信息。

我有一個項目的結構是這樣的......或者我希望它是這樣的......

 
MyProject 
    /Common 
    BusinessDataObjects (svn:external) 
    ControlsLibrary (svn:external) 
    OtherCommmonLib1 (svn:external) 
    OtherCommonLib2 (svn:external) 
    /Modules 
    Module1 
    Module2 
    Module3 
    ... 
    Application1 
    Application2 (shares all App1's files, except different .resx, icon, name, other minor differences) 
    SetupProject1 (includes app1 and certain module dlls) 
    SetupProject2 (includes app2 and certain module dlls) 

的應用基本上是(用Prism),它加載安裝在模塊一個空殼一個/模塊文件夾。我希望兩個應用程序幾乎完全相同,但我希望它們具有不同的名稱和不同的圖標。我認爲我可以通過將第一個項目的文件添加到第二個項目作爲鏈接來完成此任務,並簡單地交換資源文件,其中包括應用程序窗口標題,關於對話框等的字符串。但隨後VisualSVN或任何嘗試使用SVN添加那些我並不期待的物品。

我需要能夠開發模塊和應用程序的shell項目。他們現在還不穩定。我只是希望他們靠近彼此的副本,但是隻有輕微的命名差異。我想到了兩個應用程序項目,我可以有兩個安裝項目,其中包括每個應用程序的輸出以及哪個模塊應該包含在該版本的軟件程序中。

我試圖讓這個儘可能的簡單,我想避免必須更新外部引用到同一個項目。 (我對此也有點困惑,我是否可以:相同的回購?)這聽起來不太好,但這是我如何創建兩個幾乎相同的應用程序的主要想法。我不知道如果我無法讓我的版本控制軟件行爲起來,我該怎麼做。

我已經建議我們只有一個版本的軟件,並且有某些模塊需要升級,但是有一些很好的理由,他們不能真正做到這一點。

+0

當你擁有強大的源代碼控制功能時,爲什麼要使用「添加爲鏈接」? – bahrep

+0

@bahrep請參閱我的更新,我仍然不確定是否需要svn:externals – Alan

+0

如果有幫助,您可以接受和/或向上投票。謝謝! – bahrep

回答

1

當你添加一個文件與Visual Studio項目「添加鏈接」它的預期,該文件不會被複制到項目的文件夾中。

VisualSVN會考慮您的工作副本中的項目狀態,即使是當前解決方案中未包含的文件。但是,鏈接文件不存在於工作副本中,因此無法跟蹤。它沒有版本控制。

由於您嘗試鏈接的文件已經受版本控制(即它們存在於SVN存儲庫中),因此使用Externals Definitionssvn:externals屬性)鏈接它們是有意義的。

另請參閱TortoiseSVN Manual;它的描述svn:externals是非常好的。

+0

我不確定那個svn:externals是我想要的。我們已經使用svn:externals將其他版本控制的項目(來自不同的回購)鏈接到相同的解決方案中。這使得我們可以輕鬆管理不同項目之間的依賴關係,而不需要在不同的開發框中使用不同的路徑。但是,如果對鏈接的項目進行更改,使用svn:externals,我必須手動更新修訂版本號,我不想管理它。如果將其保留爲「head」修訂版,那麼文件狀態將不匹配,如果我檢查它以前的修訂版。在不同的情況下,我使用svn:external。 – Alan

1

你不提你的環境。但是,你提到你有一個解決方案。我假設你使用的是VisualStudio。

您是否嘗試過AnkhSVN,它是Visual Studio的Subversion的源代碼控制提供程序? AnknSVN與Microsoft的Visual SourceSafe和TeamFoundation的本地版本控制系統集成到VisualStudio中。我相信你可以使用AnknSVN做鏈接你想要的,因爲這些鏈接是真正的內部VisualStudio結構,而不是像你在Unix系統中發現的實際符號或硬鏈接。

我通常避免鏈接(我相信它們在Windows上稱爲連接),因爲它們在操作系統中不起作用。相反,您可以使用以下方法之一:

  • 使用您的構建系統來複制文件或創建所需的鏈接而不是您的版本控制系統。
  • 使用svn:externals來做鏈接。小心這個,因爲svn:externals是指向Subversion URL的指針。

例如,如果我設置http://foo.com/svn/trunk/proj1有一個svn:externals鏈接的http://foo.com/svn/trunk/proj2的頭,我通過複製http://foo.com/svn/trunk/proj1http://foo.com/svn/tags/REL-1.2/proj1創建項目1標籤,該項目仍然指向的樹幹頂部proj2。項目2的變化將改變我認爲是穩定的標籤。始終將您的svn:external指向穩定版本。

+0

我不確定svn:externals是我想要的。我想要兩個可執行文件,但我希望它們具有不同的名稱,標題和應用程序圖標。確保名字永遠不會越過非常重要。我試圖將它設置爲共享主外殼窗口,但是對於標題名稱有不同的.resx文件,並且還指向了不同的應用程序圖標等。我需要做的任何小改動都是分開的。用svn:externals,我不會一直需要管理鏈接的版本號嗎?而改變它,需要一個改變rev的提交。聽起來很棘手。 – Alan

+0

我認爲將文件添加爲鏈接只會**影響.csproj文件。另外,我們已經購買了兩個許可證並且一直使用VisualSVN。切換到AnkhSVN,不會那麼理想......也許有更好的方式讓兩個應用程序共享他們的文件,但有不同的窗口標題,圖標,名稱。我還計劃創建兩個安裝項目,每個應用程序一個,其中包含不同的模塊。通常,安裝項目會定位到另一個項目的輸出。 – Alan

+0

看到我的更新我試圖更好地解釋 – Alan