2011-08-03 180 views
1

我想創建一個git(web)瀏覽器,因此我需要迭代遠程倉庫上的提交(git log),這是在ssh連接的機器上。 我的回購是相當大的和不斷變化的,因此我會感興趣的不是隻在本地獲取更改git log他們。git登錄ssh遠程倉庫

我曾嘗試用:

git remote add origin ssh://example.net/repo 
git checkout -b master --track origin/master 

,但失敗:\

任何提示如何做到這一點?

+0

爲什麼不從ssh會話使用git日誌? –

+1

本地取貨不會那麼貴。一旦你的原始克隆產生了,我建議你保留一個本地克隆來完成所有這些跟蹤。 –

回答

0

在遠程機器上,cd到您的存儲庫並執行git instaweb。這將啓動一個您可以訪問的Web服務器,其中將包含日誌和所有其他通常使用的內容。 git help instaweb瞭解詳情。

+0

我需要與這些日誌進行交互(將消息保存到數據庫並生成PDF報告)。不過,我偶然發現了一個使用RSS/Atom提要獲取此信息的解決方案。現在我有一個身份驗證問題,我仍在繼續:} _thank you_問題仍然存在 –

+0

我仍然建議您使用本地克隆。 –

2

您可以使用掛鉤將日誌推送到Web服務器。在存儲庫主機上創建腳本:

repo.git/hook/post-receive 

其中repo.git是您的存儲庫路徑。如果有人推送到這個倉庫,鉤子將被觸發,它可以將git日誌轉儲到文件並通過ssh發送到Web服務器。

該解決方案的優點是任何有權訪問Web服務器的人都不會立即訪問存儲庫。

+0

這是非常好的提示,但是我只讀了主存儲庫的權限,但是我可以請求某人爲我執行此操作。謝謝。 –

+0

也許添加crontab條目拉,並將日誌保存到數據庫將加快速度。 –

0

您可以嘗試通過SSH在一個cronjob運行git日誌:

ssh example.net git --git-dir=repo log > /tmp/repo.log 

這樣,您就不需要創建本地資源庫副本。這假設你已經設置了ssh密鑰並且感覺這個配置是安全的(有權訪問web服務器的人可能有權訪問存儲庫)。

-1

如果你想運行git log localy您將需要克隆庫(這不正是你想幹什麼?):

git clone example.net/repo 

缺點是,它需要的空間來存儲它在Web服務器上,但在以後拉只會下載新的變化,也可能相當快,將取決於變更的大小:

cd repo 
git pull 

你可以讓使用從庫主機pull無論是在crontab中,甚至觸發它掛鉤只更新它wh需要。

+0

他問的是直接從遠程回購 – Korayem

+0

Korayem,他想避免去取,但它仍然是一個有效的解決方案。此外,這個答案是錯誤地downvoted(如果那是你),因爲它不是「馬虎,沒有努力消耗的職位,或......危險地不正確」。 –

0

您引用的命令出現錯誤的原因是因爲您需要在添加遠程設備以創建遠程跟蹤分支origin/master後運行git fetch origin

0

必須抓取做git日誌並不總是工作。 - 我有一個很大的回購,我很少更新,所以我只克隆當我需要做出改變。但我想跟上它的變化。 - 我剛推。我想仔細檢查遠程回購得到了我的變化。 和我沒有SSH訪問,但有Git訪問機器。

它似乎很明顯的是:

GIT_DIR=node:/path/to/repo.git git log 

應該限制集的git的日誌切換工作。

它是今天git中少數幾個漏洞之一,恕我直言。

+2

這似乎不適用於我嘗試過的任何遠程存儲庫URL。也許這不再是混帳? –