2

我们正在尝试使用 SubGit 作为镜像从 svn 到 git (GitLab) 的软迁移。一切正常,除了对 svn repo 的提交没有post-recive正确触发 GitLabs 钩子(我想)。

git repo 中的提交在那里,但活动流之后没有更新,CI 管道没有被触发等等。

我可以看到post-receive钩子是从 SubGit 调用的:

[daemon][20] Executing [/var/opt/gitlab/git-
data/repositories/repo.git/hooks/post-receive]; environmentVariables=
{SVN_LAST_FETCHED_REVISION=33957, GIT_DIR=., GL_ID=user-
1};workingDirectory=/var/opt/gitlab/git-data/repositories/repo.git

(我用 替换了真实的组/项目名称repo

Sidekiq 日志告诉我 a 存在一些问题GL Repository

WARN: ArgumentError: Invalid GL Repository "/var/opt/gitlab/git-
data/repositories/repo.git"

在 gitlab-rails/lib/gitlab/gl_repository.rb:10 中抛出:

def self.parse(gl_repository)
  match_data = /\A(project|wiki)-([1-9][0-9]*)\z/.match(gl_repository)
  unless match_data
    raise ArgumentError, "Invalid GL Repository \"#{gl_repository}\""
  end

通过代码,似乎钩子本身使用了一个GL_REPOSITORY未由 SubGit 设置的环境变量。

我尝试手动调用钩子并设置GL_REPOSITORY为满足上述正则表达式的内容(“project-13”,13 是此 repo 的项目 ID),但这会导致Ambiguous lookup - OID prefix is too short异常。(我的错,如果我使用了正确的钩子数据,那会起作用)

那么,GL_REPOSITORY环境变量是什么,如何让 SubGit 设置呢?

我在用着:

  • 亚搏体育app 9.4.5
  • SubGit 3.2.5

更新

我发现这GL_REPOSITORY只是一个字符串project-<GitLabDBProjectId>。现在我在每个存储库中放置了一个带有正确字符串的文本文件,并调整了post-receive钩子本身以读出该文件并将其用作内容而不是GL_REPOSITORY变量。

GitLab 中有一些与项目标识符相关的大量修改,SubGit 似乎没有赶上这些变化(存在错误报告)。

4

0 回答 0