【问题标题】:mercurial-server hook not working水银服务器挂钩不起作用
【发布时间】:2013-03-13 17:38:49
【问题描述】:

mercurial-server 在 Ubuntu 12.04 LTS 上运行

myserver@ip:/etc$ hg --version
    Mercurial Distributed SCM (version 2.0.2)
myserver@ip:/etc$ dpkg -s mercurial-server
    Package: mercurial-server
    Version: 1.2-1 
    ....

myserver@ip:/etc/mercurial-server/remote-hgrc.d$ ls -ltr
    total 12
    -rw-r--r-- 1 root root 180 Oct 10  2011 logging.rc
    -rw-r--r-- 1 root root 139 Oct 10  2011 access.rc
    -rw-r--r-- 1 root root  74 Mar 13 22:14 check.rc
myserver@ip:/etc/mercurial-server/remote-hgrc.d$ cat check.rc
    [hooks]
    pretxncommit.author_check = /SOURCE/mercurial-server/validate.sh

#manually added here too    
myserver@ip:/etc/mercurial-server/remote-hgrc.d$ cat ~hg/repos/hgadmin/.hg/hgrc
    # WARNING: when these hooks run they will entirely destroy and rewrite
    # ~/.ssh/authorized_keys

    [extensions]
    hgext.purge =

    [hooks]
    changegroup.aaaab_update = hg update -C default > /dev/null
    changegroup.aaaac_purge = hg purge --all > /dev/null
    changegroup.refreshauth = python:mercurialserver.refreshauth.hook
    pretxncommit.author_check = /SOURCE/mercurial-server/validate.sh

myserver@ip:/etc/mercurial-server/remote-hgrc.d$ cat /SOURCE/mercurial-server/validate.sh
    #!/bin/bash
    echo "REMUSR:$REMOTE_USER"
    echo "ATHR:`hg tip --template "{author}\n"`b"
    exit 1  

myserver@ip:~$ sudo -u hg cat ~hg/.ssh/authorized_keys
    no-pty,no-port-forwarding,no-X11-forwarding,no-agent-forwarding,command="/usr/share/mercurial-server/hg-ssh root/user1/user1.pub" ssh-rsa AAAAB3xOMN8ZiF user1@server.com
    no-pty,no-port-forwarding,no-X11-forwarding,no-agent-forwarding,command="/usr/share/mercurial-server/hg-ssh users/user2/user2.pub" ssh-rsa AAAAB3N..0HchQQw== user2@server.com

从本地机器(Windows)之后,我克隆了一个测试项目,更改,提交,推送,它成功了,没有任何错误或消息。我尝试使用初始用户/密钥和通过 hgadmin 添加的用户/密钥推

 D:\hg\testproj>hg push
   pushing to ssh://hg@myserver.com/testproj
   searching for changes
   remote: adding changesets
   remote: adding manifests
   remote: adding file changes
   remote: added 1 changesets with 1 changes to 1 files

【问题讨论】:

  • 您运行的是什么版本的 mercurial-server?您不需要将其添加到 ~hg/repos/hgadmin/.hg/hgrc ,除非您想专门针对 hgadmin 存储库采取行动。 Mercurial 服务器挂钩仅在通过 ssh 访问存储库时生效,并且当 ~hg/.ssh/authorized_keys 文件已由 refresh-auth 以“hg”用户身份运行时生效。您是通过 SSH 访问的吗? authorized_keys 中有什么?
  • @PaulCrowley 我已经更新了我的问题
  • @PaulCrowley 更新了 ~hg/.ssh/authorized_keys 内容

标签: mercurial-server


【解决方案1】:

适用于

$ cat check.rc 
[hooks]
pretxnchangegroup.author_check = /SOURCE/mercurial-server/validate.sh

不使用 pretxncommit

【讨论】:

    猜你喜欢
    • 2021-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-02
    相关资源
    最近更新 更多