【发布时间】: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