2016-04-25 88 views
0

我安装了gerrit。

当通过gerrit Web UI创建项目时,项目反映在$GERRIT_SITE/git文件夹中。

例如,如果在gerrit上创建项目试用,则在$GERRIT_SITE/git文件夹中创建trial.git文件夹。

但是,当我尝试在$GERRIT_SITE/git/trial.git文件夹中运行任何git命令,如下,我得到以下错误:

$ git status 
fatal: This operation must be run in a work tree 

我不知道如何去了解这一点,就需要一些指导。

+0

你的目标是什么?不要在服务器上玩回购,特别是当你Gerrit同时运行时。这很容易导致数据损坏,如果你修改了repo,Gerrit也会修改。 – StephenKing

+0

我想运行一个服务,它使用提交的commit-id,如果我可以将这个.git目录作为git的工作目录,就会产生提交。我不知道这是可取的还是可能的? – nidHi

+0

好的,我编辑了我的答案。挂钩可能对你有用。这是关键,当我们访问裸回购。但是,也许还有其他选择可以满足您的需求,即REST API或SSH Stream Events。 – StephenKing

回答

1

原因是你在磁盘上找到的是一个裸露的存储库,没有工作树(即特定分支的文件)。这对于Git服务器来说是完全正常的,一旦克隆了存储库,您在.git/目录中找到相同的内容。

编辑 可以与这些裸露的回购协议的服务器端工作,当你指定回购的路径作为GIT_DIR环境变量参数:

GIT_DIR=/var/gerrit/review/git/trial.git/ git log --quiet --pretty=medium 

这是ESP。当使用Gerrit Hooks做一些事情时,当一个新的变化被合并等等时很有帮助。

+0

是的。它的确表现出相同的行为。如果可能的话,我一直在寻找一种方式,以获得与将项目克隆到本地计算机时相同的行为,即在目录中初始化git以使其成为我的工作目录。那可能吗? – nidHi

+0

谢谢你......那有效.. :) – nidHi