代码之家  ›  专栏  ›  技术社区  ›  iamamac

Git Svn的挂钩

  •  13
  • iamamac  · 技术社区  · 15 年前

    我能把“拉”或“推”的钩子从A到A吗 git-svn 托管存储库?

    情况是我有一个项目主持人 谷歌码 ,并使用git管理本地工作副本。我想要一些 钩子 这样,当使用 git svn fetch git svn dcommit ,我可以对提交进行一些修改。因为我不托管SVN存储库,所以无法在服务器端设置挂钩。

    我能用钩子吗?或者有什么方法可以“标记”一个普通的分支,这样 git pull git push 在这个分支上,将改为签入/签出/签出到SVN存储库,因此可以使用普通的Git钩子吗?

    事先谢谢。

    3 回复  |  直到 12 年前
        1
  •  9
  •   Community Stefan Steinegger    7 年前

    如图所示 this thread ,你可以在颠覆侧有钩子,它实际上可以拒绝你的 git svn dcommit 基于某些标准。

    但是如果你需要Git端的Git钩子,我建议你设置一个中间 bare Git repository (裸露,便于推/拉)。
    在这个空回购上,您可以拥有任何所需的钩子,如中所示。” how do I deploy multiple branches to different directories via git push? “(不是关于SVN,只是在这里详细说明额外回购的类似设置)

    • 如果中间回购协议验证您的推送,它可能会触发 GIT SvN Debug .
    • 它也可以,在 git fetch 请求,触发 git svn fetch 在允许你自己的 吉特取出 前进。

    (2年后)

    David Souther 提出解决方案 his blog (2012年4月)

    我所拥有的解决方案是拥有一个具有拆分头的存储库。大多数情况下,中间存储库将有一个空的工作目录。当一个push发生时,它将在返回到空分支之前签出master、验证构建并推送到SVN。

    我们要建立一个中间的Git回购协议,有两个分支。

    • master仍会指向svn repo,
    • 以及新的分支机构 stage 将使我们保持工作目录的整洁,并与下游的更改保持同步。

    退房 his gist .

        2
  •  3
  •   hkjels    12 年前

    https://github.com/hkjels/.dotfiles/blob/master/zsh/git-svn.zsh

    如果您使用zsh,我相信这是git svn的一个好伴侣。只需将钩子放在.git/hooks中,并在命令前面加上svn-。

    例如,“Git/Hooks/Post Svn Rebase”

    该脚本还允许使用别名

        3
  •  0
  •   Tobu    15 年前

    有一个Git远程简历 remote helper 在工作中;可能有人会为SVN做同样的事情。在调用这些助手之前和之后,应该调用远程操作的普通钩子。