2011-01-07 90 views
12

我正在尋找一種方法在我自己的服務器上託管私人git倉庫。
我正在使用Github開源項目,但我寧願使用我自己的服務器來存儲私人git回購。在我自己的服務器上託管私人Git回購協議?

有人可以建議我應該爲此使用哪個腳本。
Trac不是我正在尋找的,但。我想要的東西,最好是基於PHP的解決方案(只是可選的),尤其是。有一個更簡單的用戶界面。

任何幫助在這裏讚賞。

+3

不會更適合serverfault嗎? – marcgg 2011-01-07 13:52:32

回答

10

那麼,對於非的gitosis/gitorious設置你有兩種選擇真的:

  1. 給人們的Linux帳戶富有彈(密碼和/或SSH密鑰)來訪問Git倉庫。
  2. 給人們通過SSH密鑰在/home/ac/.ssh/authorized_keys2其shell設置爲/usr/bin/git-shell是可以訪問的Linux帳戶。這意味着他們將無法使用shell以linux用戶身份登錄,因此除了在您的計算機上使用git之外,其他任何操作都是如此。

在這兩種情況下,根據您的需要(無論是作爲用戶還是作爲組的一部分),所涉及的用戶都需要(讀寫| |)訪問git存儲庫。

讓你有一個目錄/ git/project,然後在那裏有用戶存儲庫是有意義的,因爲有多個人推到同一個存儲庫通常是一個壞主意(根據我的經驗,人們打破了一些東西) 。例如,你可能有/srv/git/proj/proj-ninefingers.git,並有一個「釋放」回購'/ srv/git/proj/project.git`這可能是我如果運行團隊努力的話。權限,shell等將根據需要設置。

請注意,如果您想允許通過只讀git協議導出,則需要確保配置的git用戶具有讀權限,並且git-daemon-export-ok存在於裸倉庫中。 git update-server-info也必須在gitweb將拿起存儲庫之前運行,如果你想使用它。

正如其他人所說的那樣,git gc優化了存儲庫,定期執行此操作是個不錯的主意。克倫的工作?

最後,存在大量的框架來簡化它(gitosis,gitorious,...)。我不認爲它比通過各種機制提供對文件夾的訪問更簡單,但那就是我。

由於我的設置的一個例子,它只是做我自己,我有:

$ cat /etc/passwd | grep git 
git:x:1002:1002:Antony Vennard,,,:/home/git:/usr/bin/git-shell 
gitdaemon:x:112:65534::/nonexistent:/bin/false 
$ cat /etc/group | grep git 
git:x:1002: 
$ ls -l /srv/git 
drwxr-xr-x 7 git git 4096 2010-09-12 23:31 bsdnt.git 
drwxr-xr-x 7 git git 4096 2010-06-16 22:32 vforth.git 
$ cat /home/git/.ssh/authorized_keys2 
ssh-rsa somehex user1 
ssh-rsa somehex user2 

這意味着用私有密鑰USER1任何人都可以登錄,並承諾無論這些存儲庫。

1

Gitorious基於自己的代碼庫。 在this page你可以找到git-repo。的項目。

Gitalist是非常好用的git Web界面。

0

如果你只想代碼存儲庫並沒有網頁,只需將「git的」目錄訪問的地方,也就是足以通過HTTP克隆(請注意,您將需要ssh或類似推到倉庫)。

例如,我的一個項目以http://psi5.com/~geier/mutextrace.git的方式託管。

這是一個好主意,定期運行在該庫「混帳氣相色譜法」,以打包的對象在一起,使客戶不必使成千上萬的訪問。

如果你想要網頁,那麼gitorious的確是要走的路。