2012-10-10 37 views
4

这里有点不对劲。请允许我提供背景。是否有git活动日志?

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

然后我注意到了core.bare时,不知何故,设置为false!这是一个与--bare匹配的回购,它从未有过“.git”文件夹。然后我去检查一下,那里是一个.git文件夹,对我来说是无处不在的,让我沮丧!我问唯一可以在那里做点什么的人,当然,他没有。

编辑:我只注意到它只有在10月1日,因为我不推到master,往往可以是对已创建master分支服务器的.git似乎发生。

该文件夹具有3GB和裸文件夹,与幽灵.git旁所有GIT中的结构,具有6GB。虽然我的本地.git有16 GB,所以我不确定那里发生了什么......更重要的是,我无法检查git loggit reflog。要么裸设置为真或假我得到相同的错误fatal: bad default revision 'HEAD'。现在我觉得它已经时间来考虑how to recover the repo ...

但我经历的所有修复教条之前,我想知道:

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

找不到类似的话,我怕没有。

回答

3

这就是为什么我们已经安装了gitolite V3(通过简单地在this installation script克隆its repoinstalling it等)我们的中央混帐回购协议的服务器上。

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 
+0

嗯...我忘了提及它是一个Windows服务器。也许有了这个,我可以说服人们在这里尝试至少获得虚拟机的Ubuntu的...... P – cregox

+1

@Cawas,但你可以在Windows上安装Gitolite:http://therightstuff.de/CommentView,guid,b969ea4d-8d2c-42af- 9806-de3631f4df68.aspx这就是说,是的,在Unix上的git服务器更有意义。 – VonC

+0

我还有2个开放的子问题@VonC ...也许你可以帮忙!你会知道什么可能导致服务器变成非裸露的,为什么我看不到任何我的裸回购的reflog? – cregox

1

你可以使用引用日志怎么看参考资料中移动,其登记的活动有时候不是从通常的git的日志可见(如快进合并),但我不认为它应该在你的情况下,无所谓。

我相信你有这样的结构(这是建议把.git扩展名为裸回购的名称,所以很容易区分): ../core.bare.git/包含branches,config ,HEAD,钩,信息,对象等包含它自己的分支机构,配置等 我想你回购在服务器上 ../core.bare.git/.git是完全好,你就必须删除。从它的git文件夹,并仔细检查配置文件仍然说这是一个裸回购。

+0

好主意,但没什么大不了的存在。好吧,删除'.git'后,我现在可以看到'git log'并且推送工作!即使'reflog'也不会带来任何错误......但它并没有带来任何东西!这种怪异的行为。而且,虽然我假设你说*没有这样的“活动日志”*,但仍有一个隐含的问题:究竟是什么原因造成了这一切?光秃秃的回购券如何突然变得不光明?! – cregox

+0

我只能假设有人在错误的文件夹中发布了git init - 这就是你如何得到它的原因。 –

+0

'git init'不能在非空文件夹上工作。 – cregox