有一个git活动日志吗?

时间:2012-10-10 13:11:09

标签: git msysgit windows-server git-bare

这里出了点问题。请允许我给出背景信息。

今天我尝试推送到我们公司的默认裸msysgit Windows服务器并获得dreaded error message duplicated everywhere in SO about pushing to non-bare。我认为这个消息很奇怪,因为我的服务器应该是裸的。昨天工作得很好。

然后我注意到 core.bare 以某种方式设置为 false !这是一个名为--bare的回购邮件,它从未有过{" .git"文件夹里面。然后我去检查,那里是一个.git文件夹,对我来说,无处不在,令我沮丧!我问唯一能够在那里做过某事的人,当然,他没有做过。

编辑:我刚注意到它只发生在master分支上,而服务器的.git似乎是在10月1日创建的,这可能是正确的因为我不经常推动master

该文件夹有3GB,裸文件夹(幽灵.git旁边的所有git结构)都有6GB。虽然我的本地.git有16 GB,但我不确定那里发生了什么...更多的是,我无法检查git loggit reflog。将裸设置为true或false我得到相同的错误fatal: bad default revision 'HEAD'。现在我认为已经有时间考虑how to recover the repo ......

但在我完成所有恢复教条之前,我想知道:

  • 是否有某种 git活动日志 所以我可以看到在git中发布的所有命令,以及由谁发出的?

找不到类似的东西,我担心没有。

2 个答案:

答案 0 :(得分:3)

这就是为什么我们在我们的中央git repo服务器上安装了gitolite V3(只需在its repo中克隆installing itthis installation script)。

Gitolite将拦截任何git命令,并且(除了primary authorization framework功能之外)将在~/.gitolite/logs/gitolite-log-xxx中记录所述命令。

以下是此类日志的摘录:

2012-08-16.12:20:19     29507           system,/home/gitadmin/gitolite/bin/triggers/post-compile/update-git-configs,POST_COMPILE
2012-08-16.12:20:19     29507           system,/home/gitadmin/gitolite/bin/triggers/post-compile/update-gitweb-access-list,POST_COMPILE
2012-08-16.12:20:19     29507           system,/home/gitadmin/gitolite/bin/commands/access,%,gitweb,R,any
2012-08-16.12:20:19     29507           system,/home/gitadmin/gitolite/bin/commands/git-config,-r,%,gitweb\.
2012-08-16.12:20:19     29507           system,/home/gitadmin/gitolite/bin/triggers/post-compile/update-git-daemon-access-list,POST_COMPILE
2012-08-16.12:20:20     29507           system,/home/gitadmin/gitolite/bin/commands/access,%,daemon,R,any
2012-08-16.12:20:20     29507   END
2012-08-20.07:39:12     17683   ssh     ARGV=gitoliteadm        SOC=git-upload-pack 'gitolite-admin'    FROM=127.0.0.1
2012-08-20.07:39:12     17683           access(gitolite-admin, gitoliteadm, R, 'any'),-> refs/.*
2012-08-20.07:39:12     17683           trigger,Writable,access_1,ACCESS_1,gitolite-admin,gitoliteadm,R,any,refs/.*
2012-08-20.07:39:12     17683   pre_git gitolite-admin  gitoliteadm     R       any     -> refs/.*
2012-08-20.07:39:12     17683           system,git,shell,-c,git-upload-pack '/home/gitadmin/repositories/gitolite-admin.git'
2012-08-20.07:39:12     17683   END
2012-08-16.12:20:19     29507           system,/home/gitadmin/gitolite/bin/triggers/post-compile/update-git-configs,POST_COMPILE
2012-08-16.12:20:19     29507           system,/home/gitadmin/gitolite/bin/triggers/post-compile/update-gitweb-access-list,POST_COMPILE
2012-08-16.12:20:19     29507           system,/home/gitadmin/gitolite/bin/commands/access,%,gitweb,R,any
2012-08-16.12:20:19     29507           system,/home/gitadmin/gitolite/bin/commands/git-config,-r,%,gitweb\.
2012-08-16.12:20:19     29507           system,/home/gitadmin/gitolite/bin/triggers/post-compile/update-git-daemon-access-list,POST_COMPILE
2012-08-16.12:20:20     29507           system,/home/gitadmin/gitolite/bin/commands/access,%,daemon,R,any
2012-08-16.12:20:20     29507   END
2012-08-20.07:39:12     17683   ssh     ARGV=gitoliteadm        SOC=git-upload-pack 'gitolite-admin'    FROM=127.0.0.1
2012-08-20.07:39:12     17683           access(gitolite-admin, gitoliteadm, R, 'any'),-> refs/.*
2012-08-20.07:39:12     17683           trigger,Writable,access_1,ACCESS_1,gitolite-admin,gitoliteadm,R,any,refs/.*
2012-08-20.07:39:12     17683   pre_git gitolite-admin  gitoliteadm     R       any     -> refs/.*
2012-08-20.07:39:12     17683           system,git,shell,-c,git-upload-pack '/home/gitadmin/repositories/gitolite-admin.git'
2012-08-20.07:39:12     17683   END

答案 1 :(得分:1)

你可以使用reflog来查看引用是如何移动的,注册活动有时在通常的git日志中看不到(比如快进合并),但我不认为它在你的情况下是否重要。

我相信你有这样的结构(建议将.git扩展名放到裸仓库名称上,因此很容易区分): ../core.bare.git/包含分支,配置,HEAD,挂钩,信息,对象等 ../core.bare.git/.git包含自己的一组分支,配置等 我认为你在服务器上的repo完全没问题,你只需要从中删除.git文件夹并仔细检查配置文件是否仍然说它是一个裸仓库。