2010-03-04 55 views
18

我創建了一個回購,然後我跑svn import . https://myrepo。它似乎已經很好地檢查了一切,並且可以在我的另一臺機器上檢查它。但是,它似乎沒有創建.svn文件夾,所以我不能在以後運行任何svn ci命令。SVN導入不會創建.svn文件夾?

這就造成巨大的麻煩,試圖以後同步上漲,因爲現在我所有的東西已經在回購,但它的變化,我試圖去提交衝突。

我在做什麼錯?

+1

所以,我* *應該*導入'它,'cd ..',重命名它,然後再次檢查它?這是標準/預期的工作流程嗎? – mpen

+0

在我後面重複:「存儲庫不是工作副本,我不應該像一個一樣對待它。」 – Powerlord

+4

@Powerlord:什麼倉庫?導入時,本地目錄不是存儲庫,只是作爲回購的初始版本導入。 –

回答

31

我從不使用導入,因爲它不舒服。導入不會創建.svn目錄,您必須運行新導入目錄的額外結帳。

除了導入文件之外,我首先在回購庫中創建一個空目錄,並將其簽入到我想要「導入」的現有項目目錄中。然後你可以簡單地運行提交,它會添加所有文件。

+0

你可以檢出一個已存在的文件夾,其中包含所有的項目文件,它不會爆炸? – mpen

+0

。您可以從回購庫中檢出一個空目錄到已經包含文件的現有本地目錄中。它所要做的就是在本地目錄中創建一個.svn文件。一旦.svn存在,您可以運行提交來提交所有現有的文件。 – stmax

+2

這個方法還有一個優點,我喜歡它 - 在提交之前,您可以定義svn:ignore來排除某些文件。我經常使用它。我認爲你不能這樣做導入,導入總是導入所有內容(包括二進制文件),所以你必須在導入之前清理你的目錄,你必須在結帳後設置svn:ignores並再次提交。 – stmax

1

當您使用subversion設置項目時,在初始導入項目後,應該檢查項目並繼續在檢出的副本中處理項目。我認爲問題在於你一直在處理你簽入的副本。

+1

看來。但是這並不能解釋*爲什麼*'import'不會創建'.svn'文件夾......您想保持導入是最新的,這不合邏輯嗎? – mpen

+0

這是一個很好的問題,我無法回答自己。也許人們並不總是希望導入的目錄成爲「工作副本」,儘管它仍然可以很好地擁有該選項。我不得不說,我從來沒有真正想過太多。 – rvdginste

+0

本手冊明確提到導入不會轉換工作副本中的原始目錄樹。沒有解釋爲什麼。 http://svnbook.red-bean.com/en/1.4/svn.tour.importing.html – rvdginste

6

只有一個工作副本會有一個.svn文件夾。導入不會創建工作副本。 (爲什麼不呢?假設你試圖從沒有寫入權限的介質中導入,在這種情況下,如果導入試圖創建一個工作副本,它將失敗)。要創建工作副本,您必須使用結帳

換言之,導入會將信息推送到存儲庫。這就是它所要做的,它對原始文件沒有影響。大多數Subversion命令只能在一個方向上工作:檢出,導出和更新本地系統/工作副本上的修改文件。導入並提交只更新存儲庫。除了[un]鎖定操作之外,我無法想象同時影響存儲庫和工作副本的命令。

1

導入後,您可以運行svn checkout --force將導入的目錄轉換爲工作副本。

+0

問題是,它似乎在Linux上改變了很多權限。我通常會在我的服務器上導入/ etc目錄,並發現我需要在--force結帳後修復大量權限。 –

0

GAHHHHHHHHH ...不要使用TORTOISE-SVN來做到這一點 - 它會消滅你的本地目錄。
Sooo .........在其他地方首先做一個zip/copy!..嘆息...(至少我有一個前一個 - 雖然 - zipfile)。

+1

我相信你不知道svn的工作方式如何。 – Cheung

2

我想提供有關在導入後使用TortoiseSVN的更新。 TortoiseSVN現在可以讓您檢出一個非空的文件夾。

因此,您可以簡單地簽出到用於導入的相同文件夾中。 TortoiseSVN版本里面的所有文件,檢測到它們都匹配,並且不下載/覆蓋任何東西。不必再重新命名源文件夾,然後退出到一個新的空文件夾。使用TortoiseSVN 1.8.0版,Build 24401 - 64位,2013-06-17T18:15:59(Subversion 1.8.0, - 發行版)對Windows進行了測試,版本號爲 。

實施例:

目錄C:\ myfiles的具有數據。

  1. 導入該文件夾到SVN在http://example.com/svn/myfiles

  2. 退房http://example.com/svn/myfiles到C:\ myfiles文件。

  3. TortoiseSVN警告目的地不是空的,請點擊確定。

TortoiseSVN的地方,然後C:\ myfiles文件及其內容(目前儲備庫相匹配)版本控制之下,而不必修改/下載/替換任何文件。

+0

不幸的是,驗證文件似乎只需要一個實際的結帳:(我想我會嘗試'svn co --force',如[Michael Hackner]所建議的(http://stackoverflow.com/用戶/ 189919/michael-hackner),下一次看看它是如何發揮的。 –

0

檢查文件夾權限。在我的情況下,它的工作。