Python 远程服务器上的Git预推对象?git-ls树
我有一个用于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代码格式化程序 不要这样做。您正试图在开发人员背后运行与之相当的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过滤器分支
。不要这样做
还有别的方法吗
如果希望以特定方式格式化入站代码,请验证入站文件。如果有任何问题没有解决,请列出并拒绝推送
如何在远程服务器上获取该对象
您不能获取任意对象,只能通过ref(分支或标记)名称获取。预接收钩子在任何ref更新之前运行,因此没有ref命名入站提交 谢谢你的回复。但我正在寻找一个“不正常”的解决方案来解决这个问题,因为我面临的问题也不正常。我还知道如何进行代码格式化和验证入站文件,并拒绝推送,我已经在运行了。但是,我希望在远程服务器上执行此操作,而不是在隐藏服务器本身上。您或任何人是否知道如何创建临时引用并将其指向另一个SHA和不同的目录。@MurtazaPitalwala请描述该问题?你想让我离开这里干什么?减少服务器上的CPU负载,什么?问题是,在将提交推送到远程服务器(而不是存储服务器)上的主分支之前,我必须找到一种执行java格式检查和其他检查的方法。我倾向于认为现在还不可能,因为裁判还没有被推上。我想到的一个方法是:1。获取/git cat存储服务器2上物理文件系统上的*.java文件。然后将文件上载到远程服务器3。上传文件后,在远程服务器4上执行工作。将响应(0或1)发送回存储服务器。