2013-01-15 64 views
43

我正在運行一個可以通過SSH,在自定義端口(比如說12345)上訪問的git存儲庫服務器。我發現,在這種情況下,庫URL需要使用SSH語法指定:Git存儲庫URL - 沒有絕對路徑的SSH語法

git clone ssh://[email protected]:12345/absolute/path/to/repository 

我想設置它以這樣一種方式,這將是用戶能夠克隆庫,而無需指定絕對路徑。

git clone ssh://[email protected]:12345/repository.git 

我研究的話題,發現如下選項:

  1. 從URL刪除自定義端口,使用戶將其添加到他們的~/.ssh/config文件(一個不得已的解決辦法,而不是解)。
  2. 刪除SSH和使用git-daemon並指定其--base-path參數(仍然是一個解決辦法...)
  3. 使用像gitosisgitolite的工具 - 但它不會是一個矯枉過正使用它僅用於這一目的? Gitosis的中斷,gitolite是一個相當龐大的軟件片...

所有我想要的是一個「漂亮」的SSH URL與自定義端口(這樣我就可以分發整個git clone命令,並要求僅此而已從遠程用戶)。對我而言,哪一種解決方案最可行?

+0

Gitolite其實不是那麼大,但它保存得很好,而且很容易設置。我也是第一次懷疑,但我很樂意擁有它。 – jszakmeister

回答

56

如果您使用替代形式的ssh網址,則不需要絕對路徑。例如...

git clone [email protected]:repos/myrepo.git 

...將克隆庫repos/myrepo.git相對於我的主目錄,雖然這不允許使用備用端口。但是,您也可以使用~在任一形式來表示用戶的主目錄,例如:

git clone ssh://[email protected]:12345/~/repository.git 

順便說一句,儘管被停產,gitosis功能相當不錯,而且代碼既小又容易理解。它提供了一套有用的訪問控制和存儲庫的自助服務管理。我不會完全打折。

+4

您仍然可以在SSH配置中爲第一個示例設置自定義端口。實際上我更喜歡這樣做。我通過git repos中的別名引用遠程服務器,並在SSH配置中設置所有必要的參數。所以如果我決定改變我的服務器配置,我只是改變SSH配置。 – morgoth84

+0

剛剛與git版本2.7.4一起嘗試過,似乎只有第二個例子有效。 – untill

+0

第一個例子繼續使用'git'版本到2.9.3。這只是標準語法的一部分。如果您遇到困難,您可能想要提出一個新問題。 – larsks

5

我這樣做,不完全是你問什麼,但接近與漂亮鏈接:

你的地方,你的Git項目

未來做一個符號創建像

/srv/git 

路徑鏈接到家:

ln -s /srv/git $HOME 

接下來你可以有更短的鏈接

git clone [email protected]:git/myproject.git 

,如果你有,你可以在URL

下一個

git clone [email protected]:myproject.git 

將努力擺脫git的/部分的單個項目。 當然,URL末尾的.git只來自在名稱中創建名爲.git的裸機。 還要注意,不需要ssh://部分:@意味着它是git的ssh URL。

更新:讓我添加一個旁註:關注最近的Filesystem Hierarchy Standard我現在使用/srv/git作爲存儲庫位置。

相關問題