我编写了一个python检查,它在(盐状态)sls文件的文件夹中查找,并检查重复项,因为如果你没有捕获它们会导致一个奇怪的错误。如果我在我的本地git repo中运行它,脚本工作正常,但我想将它作为服务器上的外部钩子运行,这样我就可以对执行提交的任何人强制执行规则(而不是仅仅将它们放在.git / hooks中)文件夹,并要求其他人使用它们,并希望他们这样做)。使用这个plugin你可以设置钩子在服务器上运行,但是当我在服务器上运行检查它不起作用,因为文件夹结构不像我在本地的分支,它是一个git服务器所以我们有:
['packed-refs', 'description', 'stash-refs', 'refs', 'branches', 'config', 'FETCH_HEAD', 'HEAD', 'objects', 'info', 'hooks', '.mailmap.new', 'logs']
我问过一位同事,他提到他用另一种语言(perl或ruby)编写了一个脚本,该脚本获取服务器上文件夹的内容,并使用它在分支中构建文件以运行测试。 / p>
我正在尝试找出如何在python中执行此操作,或者如果有更好的方法可以解决这个问题,我还没有考虑过。
我四处寻找,但我发现很难在搜索中描述这个过程!
答案 0 :(得分:-1)
服务器上的git存储库是bare repo。它没有工作目录(你看起来像“分支”,似乎),没有文件被检出。
您看到不同目录结构的原因是因为在裸存储库中,通常位于.git
子目录中的元数据文件只存在于主repo目录中。将上面的结构与本地repository/.git
目录的内容进行比较,您将会看到。
您似乎正在使用Bitbucket Server(仅基于您问题上的标签),因此您无法在此处进行更改。你能够在Bitbucket上运行的钩子只能根据git元数据而不是repo的实际内容来做。
你需要在某个地方设置一个构建服务器,自动测试你的repo中的代码,然后在Bitbucket上挂钩,推送到这个构建服务器并报告测试结果。
您可以使用Docker Hub或与Bitbucket集成的其他内容进行简单设置,甚至可以使用Atlassian自己的持续集成工具Bamboo。
答案 1 :(得分:-1)
我想出了怎么做,我花了几天时间,我不得不复制我的同事写的红宝石脚本的功能。脚本跑到200多行,所以我不会把它放在这里,而是为了夏天我需要做的事情:
git show-ref --heads
git log --format="%H" [to_ref]
git diff --name-only [from_ref] [to_ref]
git show [to_ref]:[file_name]
有一次,我允许我查看当前提交中已更改的每个文件的全部内容。