2008-09-22 67 views
17

我正在開發一個已經發展到相當規模的項目,並且我是唯一的開發人員。我們目前不使用任何版本控制,但我肯定需要開始。將版本控制添加到現有項目

我想使用Subversion。將現有項目轉移到其中的最佳方式是什麼?

我有一個測試服務器,用於開發新功能,然後將這些文件傳輸到2個生產服務器。有沒有一種工具可以自動上傳到測試中,然後部署到實時服務器上?

這一切都是使用Visual Studio(如果該事項)

回答

16

爲了擴大一點在以前的答案...

1)創建一個新的SVN倉庫
2)提交所有你對到目前爲止的工作吧
3)的代碼檢查所有再次輸出代碼,在您的開發機器上創建工作副本
4)工作!

這絕對不是障礙,真的。

+11

這難道不是真的嗎? 把一個現有的項目放在SVN中對我來說是一件很恐怖的事情(至少在使用Tortoise的時候)。 要創建回購,您需要一個空文件夾[原文!]。 你可以先導入東西(然後結賬),但是你會將你永遠不會放在那裏的所有垃圾(即R#緩存等)導入到你的SVN中。 事實證明,你必須重新命名你的文件夾,並做文件複製/移動舞蹈做簡單的事情。 它真的令我驚訝,它有多少麻煩。 我想知道有多少新人有這種不好的第一印象。 – 2009-09-15 10:30:30

+0

雖然我更喜歡TFS,但它其實很簡單。 1)在VisualSVN服務器中創建一個新的svn倉庫2)在你的倉庫中右鍵點擊你想要的文件夾,然後轉到TortoiseSVN - >導入並放置在中繼線中,例如https:// localhost:8443/svn/myproject/trunk – 2013-02-05 04:50:53

3

導入現有的基地變成一個SVN倉庫在ASP.NET開發,簽退了出來,並開始工作了。

+0

只要確保在刪除原件(如果要刪除原件)之前檢查簽出的文件是否齊全。作爲一個最大的WTF問題的海報將作證。 :D – KTC 2008-09-22 20:36:34

+1

不好的建議,這樣你最終會導入你的倉庫中不應該有的所有垃圾,比如R#緩存,obj文件夾等。 – 2009-09-15 10:44:47

3

您應該看看Visual SVN,它可以無縫集成到Visual Studio中。

+0

與AnkhSVN相比,價值49美元? – 2008-09-22 20:38:30

+0

這個網站上的人已經表達了Ankh的問題。 Jeff和他的團隊使用VisualSVN,我也是如此。我喜歡它。 – mmcdole 2008-09-30 20:59:51

1

Subversion服務器安裝... Subverison客戶端庫安裝裝配

集成安裝安赫與VS 的文件管理器集成

安裝龜在文件管理器中,右鍵單擊頂級水平方向解決方案...導入...

0

對於你所需要的,但在一臺機器上創建一個SVN倉庫,然後在另一臺設置一個連續的集成服務器上,這可能是矯枉過正的。我會推薦TeamCity。 (如果硬件很貴,您也可以使用虛擬PC)

這將允許您在構建完成並測試後添加自定義構建步驟以部署到生產服務器上。

TeamCity欲瞭解更多信息。 Thi還爲Visual Studio提供了一個插件

0

使用Subversion很容易。下載TortoiseSVN,它將SVN集成到Windows資源管理器中。下載VS集成的AnkhSVN。將svnserve設置爲Windows服務(位於文檔中)。

然後你要做的就是從svn檢出一個空目錄,並將所有的代碼文件複製到它。然後添加他們與烏龜,並承諾。當您在Visual Studio中更改文件時,Ankh會向您顯示您已更改的文件,並且您可以在此處提交它們。

儘管您可能會發現批處理腳本和xcopy足夠,但我們使用NAnt腳本完成所有部署。

0

我比Perversion更熟悉Perversion而不是顛覆,但將項目放在版本控制下並不難。

一旦你安裝並運行了版本控制軟件,就清除你的代碼目錄中的所有非源代碼(例如,運行'make clean')。然後使用該命令以遞歸方式將新文件添加到存儲庫。按照提交,你就完成了。我建議至少檢查一次不同的機器和建築物,以確保您擁有所需的一切。

至於部署到服務器上,這不是一個真正的版本控制問題。您通常會將它放到您的構建系統中(即'make testinstall','make install')或者只編寫shell腳本。

2

拋開技術問題,只需獲得SVN並開始使用它。您會看到直接的好處(查看代碼歷史記錄,區分調試以瞭解哪些更改引入了上週不存在的錯誤),並且您永遠不會想回頭。

我個人不喜歡集成在IDE中的源代碼控制。我使用與Windows資源管理器集成的Tortoise SVN,並允許您直接從操作系統檢入,比較,合併等文件。

0

對喬和史蒂夫提供的答案+1。我還會提到,設置忽略列表或SVN道具是非常重要的,以便您不檢查用戶文件,resharper設置。

另外,還要確保你有可能需要爲創造一切條件,如構建腳本,第三方組件,外部工具,如NUnit的,南特等

當你在的話,我會強烈建議您查看CC.net,並獲得持續集成服務器以使您的構建自動化。

有源控制是一回事,正確使用它是另一回事。請記得經常和早點入住。

0

簡單的答案是Subversion和Tortoise SVN。

我已經在Visual Studio中使用了Subversion,並且已經用一個現有的項目實現了它。有一個名爲Ankh的免費Visual Studio插件,我使用它取得了一些成功。然而,我曾遇到一些問題,Ankh拒絕與.svn元數據中反映的文件的真實狀態保持同步(它確實需要更新文件,以便在烏龜向我顯示它是最新的時候)。在這些情況下,視覺工作室重新啓動解決了這些問題,但這對我來說是痛苦和乏味的。

目前,我停止使用Ankh,並在VS中正常工作,然後使用Tortoise和Windows資源管理器檢查它們是否進入/退出。這工作完美無瑕。沒有VS刷新或重新啓動必要的。

0

1)創建一個新的存儲庫 - 您可以在測試服務器上創建它,然後將其轉移到專用服務器/ NAS(如果它讓事情變得簡單)。 2)將所有現有的源代碼導入存儲庫。 3)您可以使用'svn'命令行工具(及其相關工具,如svnadmin)創建批處理文件,該文件將自動執行上傳和部署過程(後者與編譯器結合使用)。

你可以在這裏找到更多的信息: SVN book - 剛開始閱讀它 - 你不需要閱讀所有的啓動並獲得svn運行。 MSBuild - 微軟的構建自動化平臺,雖然它可能是一個矯枉過正的,取決於你的項目的大小。

如果您的Visual Studio與批處理文件you may use it to compile your solution在同一臺計算機上,儘管我懷疑您將在未來遇到擴展問題。

0

版本控制和部署是兩個獨立的問題(儘管好的版本控制系統可以使部署更加一致,可重複的過程)。一旦你設置了版本控制服務器,你可以使用一組簡單的腳本/批處理文件來自動檢查代碼並將其部署到服務器。

7

我沒有看到任何人解決你的問題/後的這一部分:

是否有一個工具,將 上傳自動化測試,那麼 部署到Live服務器?

一個問題是Subversion在工作副本中創建隱藏的.svn文件夾。其中一個解決方案是使用svn export命令。這會在不帶.svn文件夾的另一個目錄中創建一個存儲庫副本。

據我所知,沒有自動化的工具。您可以創建一個批處理文件,會發出這樣的SVN導出命令:

svn export C:\MyReporitosy\Path C:\DestinationPath 

就包括這個作爲部署過程的一部分。確保從這個導出的目錄中部署您的代碼,而不是您的工作副本。那你應該沒事的。

2

不需要SVN服務器。
使用龜水銀http://sourceforge.net/project/showfiles.php?group_id=199155

設置本地回購
1)下載並安裝
2)打開資源管理器窗口中的基本目錄的你的項目
3)右擊 - > TortoiseHG - >創建庫這裏 - >好的
4)右鍵 - > HG提交...
5)鍵入您提交的評論中,選擇哪些文件進行跟蹤,並點擊提交

安裝遠程回購了文件共享可用的(其他運輸方式)
1)打開資源管理器窗口來遠程文件夾
2A)右-Click - > TortoiseHG - >克隆一個倉庫
2B)或者,只是犯本地
1)打開資源管理器窗口來遠程文件夾後在

更新遠程回購您的本地回購複製 2)右擊 - > TortoiseHG - >同步
3)選擇「更新到新尖」上拉菜單
4)輸入路徑到本地回購爲「遠程路徑:」輸入框中 5)點擊拉

0

要添加到以前的答案,我也推薦了明顯的(但他們應該作出明確的)建議:

  • 選擇您的項目在你的倉庫進口的穩定狀態(任何工具你選擇)
  • 立即創建一個標籤(或標籤在SVN),一旦導入完成並「檢查」(如'是否編譯?','我們是否需要所有設置文件?',...)
  • 想想您需要不同的'開發工作'在這個項目的生命週期中做這件事,那會讓你很清楚你的分支應該是什麼樣的。
    (維護分支的舊版本已經在生產,而你正在開發的下一個版本,合併分支隔離複雜的合併,補丁分行,...)

現在,請注意:

有沒有一種工具可以自動上傳到測試中,然後部署到實時服務器上?

你的問題的一部分,是指「發佈管理」的過程,這是非常不同是「版本管理」。
我不確定您選擇的版本工具可以主動提供幫助。特別是當你考慮在生產服務器上不應該有版本控制工具的時候(爲了使生產服務器與任何工具的依賴性保持在最低限度:只有監控和報告工具應該被允許,除了你的程序 - 這裏是一個Web服務器 - )

1

我想知道爲什麼你選擇了Subversion?如果你的項目沒有使用任何vc,可能你應該考慮使用Mercurial或者Git。

他們強調的一點是,他們不需要中央存儲庫,這意味着您的程序員可以簽出您的項目,去他們的家,工作(不必與服務器建立連接),並在第二天回到辦公室並同步他們的存儲庫。

如果SVN不是市長的要求,我建議考慮任何一個dvc系統。

0

我最近開始喜歡集市的簡單解決已經對應用砍死後開始的版本控制問題一段時間。

有了集市真的是隻有幾個簡單的命令: 1)bzr init命令 2)BZR添加 3)BZR提交

注意這並設置[您感興趣的文件]任何中央儲存庫。但你也可以這樣做。

關於使用它作爲部署工具,我很確定不久前我讀了一些關於它的內容。無論如何,這些文件真的很好。

-1

我在桌面上使用mercurial,我喜歡它。創建倉庫是超級容易...

hg init /path/to/repository 

添加文件...

hg add /folder/pattern 

OR 

hg add FILE 

然後你只犯...

hg commit 

而且你啓動和運行。

另一個偉大的事情是,當我想同步到我的筆記本電腦只是......

hg pull //desktop_name/path/to/repo/ 
hg update 

,我喜歡顛覆的事情是爲Visual Studio撐着,我留在我的更新頂部更多的時候,狀態圖標總是在我面前主演我。如果你打算在一個項目上工作的話,那麼這個插件肯定可以彌補設置svn庫的麻煩。

0

這個問題很明顯在Subversion上(SVN是別名)。

這些步驟如下:

1) Create a New Repository (if needed, if using VisualSVN Server then very easy) 
2) Right click on the Folder of which you want to put the folders and files into your repository 
3) With having the right click menu go to TortoiseSVN 
4) Choose IMPORT 
5) Place in trunk (best practice) 

e.g. https://computername:8443/svn/MyCoolCode/trunk 
4

+1馬特豪威爾的回答。

我不知道我通過在回購庫中創建目錄添加了一個新項目,將新項目導入到項目中,然後再次檢出。這就是爲什麼馬特的回答是最好的:

  1. 我創建一個名爲FRED項目,並做了一些工作

  2. 我創建SVN回購目錄,並導入FRED進去。

  3. 但FRED目錄仍然不受源代碼管理 - 它缺乏。svn文件,所以我需要檢查出來,進入一個新的目錄,我們稱之爲FRED-NEW,重新創建所有文件

  4. 然後,我需要刪除FRED,讓我緊張的東西一路上迷路或損壞。

馬特說,檢查出早了一步,而在SVN回購的文件夾仍然是空的:

  1. 在SVN創建一個目錄,並檢查了入FRED-NEW。

  2. 複製FRED-NEW/.svn文件到FRED/

  3. 右鍵單擊添加的所有文件。 FRED現在處於源代碼管理狀態,無需重新創建和刪除。

猶未:

  1. 創建SVN目錄,在此之前將文件添加到它,從直接檢查空目錄INTO FRED。

  2. 右鍵單擊添加所有文件。

此外,如果你正在使用CLI,並沒有想到這一點,直到提交新的文件後,請參見下面alroc的回答是:--force檢查伸到FRED時。

-1

該問題清楚地集中在現有的項目。我在這個線程中還沒有找到合適的答案,並在我找到解決方案之前一直在玩。如許多答案中所述,結賬時會出現麻煩,並且最終得到第二個版本文件夾,您現有的項目仍處於未版本控制狀態,並且您不願意複製/粘貼和/或重命名文件夾。

這個問題的解決方案如下:

假設你有一大堆的PC1項目,全部收集爲一個名爲「項目」文件夾下的子文件夾,你想版本他們都在一個存儲庫。然後你想在PC2上用相同的文件夾結構檢查它。然後你做到以下幾點:

  1. 創建的網絡驅動器上存儲庫的文件夾,並確保它被命名爲「項目」,即相同的名稱作爲開發的父文件夾項目。例如,在網絡驅動器上創建一個像X:\ Repository \ Projects這樣的文件夾。
  2. 用鼠標右鍵單擊該文件夾並選擇TurtoiseSVN - >在此創建存儲庫
  3. 右鍵單擊PC1(您現有的項目)上的開發「項目」文件夾,然後按TurtoiseSVN - >導入。選擇名稱爲「Projects」的正確存儲庫(以防在網絡驅動器上已有其他存儲庫)。現在您的項目可供其他PC使用。
  4. 在PC2上想要「Projects」文件夾的父文件夾。
  5. 在PC2上右鍵點擊此父文件夾並選擇SVN Checkout。這些項目現在可在PC2上使用。
  6. 從現在開始,您使用「提交」來存儲存儲庫中的更改並「更新」以從存儲庫獲取最新版本。