2009-08-16 92 views
6

這個問題出於好奇而不是任何實際的問題,但我可以有效地讓我的$ GIT_DIR成爲git://example.com/repo.git/?所以沒有.git文件夾 - 每一次提交等都會經歷網絡開銷。git沒有.git文件夾 - 一個遠程git-dir

編輯: 一個潛在用途的情況下可能是試圖做一個簡單的「出口」像SVN,但事實證明,問題的答案here

+0

你的問題措辭可怕,語法是我可能知道答案,但不能解決問題。 – 2009-08-16 10:03:44

+0

我其實同意。我現在重新寫了它,希望更好:) – 2009-08-18 06:52:59

回答

3

$GIT_DIRintroduced in May 2005,是:

  • 同時指定SHA1_FILE_DIRECTORY(是GIT_OBJECT_DIRECTORY,即 「$GIT_DIR/objects 」)
  • GIT_INDEX_FILE(「 $GIT_DIR/index」)

當未定義GIT_DIR時,它默認爲「.git」。

它意味着當前工作目錄的絕對路徑或相對路徑,而不是http或git絕對路徑。

靈感來自這個post from Junio C. Hamano

一些命令不會在後一種情況下工作。
例如,「git diff <one-tree>」(代表了一種diff的工作樹的部分目前與給定樹)會失敗。
注意:這不像「git diff」,它與索引相同。
使用這些命令(以及在工作樹外部沒有GIT_DIR的情況下運行時出錯的其他命令),您真的需要在您感興趣的子目錄中。 。

1

不,不可能有遠程$ GIT_DIR(也不可能在.git/objects/info/alternates有遠程存儲庫)。 Git只是不這樣工作。

2

我會假設,如果你問這個問題,你可能試圖創建一個問題來解決。

想想爲什麼你就需要有一個奇異的Git倉庫的人可以讀取和直接從自己的遠程機器寫不出來,並試圖將它們添加到這個問題,因爲它似乎所有你就是全世界。試圖像SVN一樣使用Git。而那結束痛苦。

對於初學者來說,如果你不想做一個完整的深鏡子只是創造了上游的補丁,請注意:

--depth <depth>
創建一個淺克隆與歷史截斷成指定的修訂數量。一個淺層的 存儲庫有一些限制(你不能從中克隆或獲取,也不能從 開始),但是如果你只關心一個歷史悠久的大型項目的近期歷史,想要發送修補程序作爲補丁。 (git help clone

+1

這並不是不合理的。 Git掙扎的一個領域是很多非常大的文件,其中有很多歷史記錄發生了變化。也就是說,.git /目錄非常大 - 可能比工作副本大得多。例如,.git可能不適合筆記本電腦的硬盤,但工作副本可能。此外,海報從來沒有提到共享該遠程存儲庫(這將是一個問題) – 2009-08-17 01:52:01

+0

我必須同意@Pat Notz。我擔心你急於判斷這是一個「X Y」問題。記住,僅僅因爲你無法想象一個用例並不意味着它不存在。但是,鑑於Git不支持此功能的現實,您的回答非常有用。 – 2010-05-24 21:54:15

2

像其他人指出,Git是不寫這樣的工作方式。不過,我認爲你可以在網絡上安裝你的.git目錄。也許你可以將遠程服務器掛載爲NFS或sshfs這樣的文件系統。這不是你想要的一般,但它可能適用於某些情況。

1

可能的(鈍,但功能)解決方案:遠程掛載您要使用的目錄,並將.git目錄軟連接到掛載點。