git log over ssh remote repository

时间:2011-08-03 10:17:55

标签: git ssh iterator git-log

我想创建一个git(web)浏览器,因此我需要在ssh连接的机器上的远程存储库上迭代提交(git log)。 我的回购非常大且不断变化,因此我有兴趣不在本地仅对git log提取更改。

我尝试过:

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

它失败了:\

任何提示如何做到这一点?

6 个答案:

答案 0 :(得分:2)

您可以使用挂钩将日志推送到Web服务器。在存储库主机上创建一个脚本:

repo.git/hook/post-receive

其中repo.git是您的存储库路径。如果有人推送到此存储库,将触发挂钩,它可以将git日志转储到文件并通过ssh将其发送到Web服务器。

该解决方案的优势在于,任何有权访问Web服务器的人都无法立即访问存储库。

答案 1 :(得分:0)

在远程计算机上cd到您的存储库并执行git instaweb。这将启动您可以访问的Web服务器,其中包含日志和通常使用的所有其他内容。 git help instaweb了解详情。

答案 2 :(得分:0)

您可以尝试在cronjob中通过ssh运行git log:

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

这样您就不需要创建本地存储库副本。这假设您使用此配置设置了ssh密钥并感到安全(有权访问Web服务器的人可能会访问存储库)。

答案 3 :(得分:0)

您引用命令出错的原因是您需要在添加遥控器后运行git fetch origin以创建远程跟踪分支origin/master

答案 4 :(得分:0)

必须提取git日志并不总是有效。 - 我有一个很大的回购,我很少更新,所以我只需要克隆,我需要进行更改。但我想跟上它的变化。 - 我只是推了推。我想仔细检查一下远程仓库得到了我的改变。 我没有ssh访问权限,但确实有git访问该机器。

很明显:

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

应该适用于一组受限制的git log开关。

这是今天git中为数不多的几个漏洞之一,恕我直言。

答案 5 :(得分:-1)

如果你想运行git log localy,你需要克隆存储库(这不是你想要做的吗?):

git clone example.net/repo

缺点是它需要空间将其存储在Web服务器上,但是任何未来的拉动都只会下载新的更改并且可能非常快并且将取决于更改的大小:

cd repo
git pull

您可以在crontab中创建pull,甚至可以使用hook从存储库主机触发它,仅在需要时更新它。