2

我需要编写一个 shell 脚本来安排每天运行以使用 mercurial 备份目录。我已经完成了大部分用例,除了我可以找到一种在脚本运行时进行自动登录的方法。

for REPOSITORY in $@ 
do
    cd $REPOSITORY

    # commit the changes
    hg commit -A -m "Commit changes `date`"

    # push the changes to the remote repository
    if hg push 
    then
        logger hg push success
    else
        logger hg push failure
    fi
done

发出 hg push 命令后会显示登录提示。

4

2 回答 2

7

我同意您应该为非交互式登录配置备份脚本。一种方法是使用 SSH 密钥,更简单的解决方案是将密码直接包含在 URL 中。

Mercurial 1.3 使在配置文件中包含 HTTP 密码变得更加容易。我现在有一个

[auth]
bb.prefix = https://bitbucket.org/mg/
bb.username = mg
bb.password = pw

我的配置文件中的部分。这意味着您可以避免将密码存储在多个文件中,而只专注于保护一个文件。

事实上,我正在使用另一个新功能来避免输入密码~/.hgrc,因为我可能想向其他人展示该文件。相反,我有

%include .hgauth

在上面的部分中~/.hgrc,我一个人可以阅读。~/.hgauth[auth]

于 2009-05-24T15:18:49.907 回答
3

Mercurial 允许您将用户名和密码放入存储库 URL:

hg push http://username:password@hg.myco.com/repo

如果您不想将 URL 放在命令行上,您可以编辑hgrc本地存储库的文件并将用户名和密码放在default-pushURL 中:

default-push = http://username:password@hg.myco.com/repo

这意味着任何人hg push都将使用hgrc文件中指定的用户名。

于 2009-05-08T09:13:13.937 回答