Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 远程服务器上的Git预推对象?git-ls树_Python_Git_Bash - Fatal编程技术网

Python 远程服务器上的Git预推对象?git-ls树

Python 远程服务器上的Git预推对象?git-ls树,python,git,bash,Python,Git,Bash,我有一个用于git的Atlassian隐藏服务器 我希望编写一个脚本,将java代码格式化程序作为预接收挂钩运行(在它将更改推送到存储库之前) 因此,我希望做的是而不是在存储服务器本身上执行工作,而不是在另一台服务器上执行工作,并将状态返回(0或1)到存储服务器 我已经用Python编写了这个脚本,它在远程服务器上调用一个cgi(Python)脚本,使用“ref oldrev newrev”作为HTTP GET方法。在远程服务器上获得STDIN值(ref oldrev newrev)后,我创建了

我有一个用于git的Atlassian隐藏服务器

我希望编写一个脚本,将java代码格式化程序作为预接收挂钩运行(在它将更改推送到存储库之前)

因此,我希望做的是而不是在存储服务器本身上执行工作,而不是在另一台服务器上执行工作,并将状态返回(0或1)到存储服务器

我已经用Python编写了这个脚本,它在远程服务器上调用一个cgi(Python)脚本,使用“ref oldrev newrev”作为HTTP GET方法。在远程服务器上获得STDIN值(ref oldrev newrev)后,我创建了一个dir、git init、git remote add origin URL和git fetch(我甚至尝试了git pull)来获取reporstory的最新内容/对象,希望获取尚未推送到存储库但在预推阶段环境中的对象

处于预推送阶段的对象的哈希或SHA键或“newrev”键:36ac63fe7b15049c132c310e1ee153e044b236b7

现在,当我在上面创建的目录中运行“git ls tree 36ac63fe7b15049c132c310e1ee153e044b236b7 Test.java”时,它给出了一个错误

'致命:不是树对象'

现在,我的问题是:

如何在远程服务器上获取该对象

在那个阶段,我运行的git命令将为我提供那个对象是什么

还有别的方法吗

我上面问的有意义吗。如果我不清楚,请告诉我,我会尽量把事情弄清楚

非常感谢您的帮助

作为预接收挂钩的java代码格式化程序

不要这样做。您正试图在开发人员背后运行与之相当的
git过滤器分支
。不要这样做

还有别的方法吗

如果希望以特定方式格式化入站代码,请验证入站文件。如果有任何问题没有解决,请列出并拒绝推送

如何在远程服务器上获取该对象


您不能获取任意对象,只能通过ref(分支或标记)名称获取。预接收钩子在任何ref更新之前运行,因此没有ref命名入站提交

谢谢你的回复。但我正在寻找一个“不正常”的解决方案来解决这个问题,因为我面临的问题也不正常。我还知道如何进行代码格式化和验证入站文件,并拒绝推送,我已经在运行了。但是,我希望在远程服务器上执行此操作,而不是在隐藏服务器本身上。您或任何人是否知道如何创建临时引用并将其指向另一个SHA和不同的目录。@MurtazaPitalwala请描述该问题?你想让我离开这里干什么?减少服务器上的CPU负载,什么?问题是,在将提交推送到远程服务器(而不是存储服务器)上的主分支之前,我必须找到一种执行java格式检查和其他检查的方法。我倾向于认为现在还不可能,因为裁判还没有被推上。我想到的一个方法是:1。获取/git cat存储服务器2上物理文件系统上的*.java文件。然后将文件上载到远程服务器3。上传文件后,在远程服务器4上执行工作。将响应(0或1)发送回存储服务器。