- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在访问多个 mercurial 存储库,并且根据主机名,我想配置我在每个存储库上显示的名称和电子邮件地址。
显而易见的解决方案是将“用户名”添加到每个 repo 的 hgrc 文件的 ui 部分,但我不想依赖这个,因为这些沙箱不时被删除。
因此,我需要一个可以将所有这些放在一起的中心位置。理想情况下,我想要一个解决方案,我可以将主机名映射到用户特定的 hgrc 文件 (~/.hgrc) 中的用户名。
这可能吗?
问候,
[编辑]
是的,@cyon 的回答完成了这项工作。我刚刚对其进行了更新以处理“ssh://user@”类型的 url,并且在克隆命令中没有目标文件夹时也可以应对。
def merc_host_to_username_mapper(**kwargs):
host_to_username_map={'bitbucket.org' : 'your name <name@mail.com>'}
hg_pats = kwargs['pats']
merc_url = hg_pats[0]
merc_path_list = merc_url.split('://', 1)
if len(merc_path_list) == 1:
#print('ret1')
return
merc_sub_path = merc_path_list[-1].split('@',1)[-1]
while True:
#print('sub_path: ', merc_sub_path)
if merc_sub_path in host_to_username_map:
#print('found path, breaking')
break
else:
if len(merc_sub_path.rsplit('/', 1)) == 1:
#print('ret2')
return
else:
merc_sub_path = merc_sub_path.rsplit('/', 1)[0]
if len(hg_pats) is 1:
for folder in reversed(hg_pats[0].split('/')):
if folder:
hg_pats.append(folder)
#print('breaking ',folder)
break
if len(hg_pats) is 1:
#print('ret3')
return
#print('hg_pats: ', hg_pats)
with open(hg_pats[1] + "/.hg/hgrc", "a") as hgrc:
print("adding username \'" + host_to_username_map[merc_sub_path] + '\' to hgrc');
hgrc.write("[ui]\n");
hgrc.write("username=" + host_to_username_map[merc_sub_path] + "\n");
最佳答案
您可以使用 post-clone
钩子(Hook)自动将“用户名”添加到每个 repo 的 hgrc 的 ui 部分。
然后这个钩子(Hook)会给你一个地方来保存从 repo 到用户名的集中映射。
代码可能如下所示:
〜/.hgrc:
[hooks]
post-clone=python:/path/to/script/name_chooser.py:chooser
def chooser(**kwargs):
map={'https://bitbucket.org/yourrepo' : 'your_user'}
hg_pats = kwargs['pats']
if hg_pats[0] not in map:
return
with open(hg_pats[1] + "/.hg/hgrc", "a") as hgrc:
hgrc.write("[ui]\n");
hgrc.write("username=" + map[hg_pats[0]] + "\n");
kwargs['pats']
是
hg clone
的参数列表命令。在这段代码中,我假设您像这样调用克隆:
hg clone https://bitbucket.org/yourrepo local_repo_path
关于hgrc中的多个用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29133722/
我在 Google 代码托管上的一些项目中使用了 Hg。对于我在 .hgrc 的 [auth] 部分中设置的每个项目,用户名/密码无需每次都要求输入密码即可推送。但它有很多重复,例如: [auth]
在与 mercurial 进行比较时,我通常想忽略空白的变化。如果我通过放置 ignorews = true 将其设置为默认值在我的 .hgrc 的 [diff] 部分中,似乎没有办法强制在命令行上为
我正在尝试使用 Mercurial 的通用扩展名创建一个共享的 hgrc 文件,以便我的同事可以获得一致的体验并找到有用的工具。但是,启用不随 Mercurial 一起提供的扩展会导致问题。 我的主要
我需要知道是否可以在我的 hgrc 文件中添加如下内容: [paths] default = http://somehost.com/repos/ live = ssh://user@host.com
我正在设置一个集中托管的 Mercurial 存储库。我希望能够仅定义能够访问该存储库的一小部分用户(可能是 3 或 4 个)-我需要在 .hg/hgrc 文件中写入什么才能使其像这样工作? 谢谢,P
有人可以告诉我 .hgrc 配置中有什么不正确吗?我正在尝试使用 gmail 在每次推送和/或提交后发送电子邮件。 .hgrc [paths] default = ssh://www.domain.c
我有两个项目在合作,它们位于不同的服务器 A 和 B。A 在 /opt/mercurial/bin/hg 中有 hg 程序,而 B 在 /usr/local/bin/hg 中有它。 当我想拉/推更改到
我试图在 .hgrc 文件中插入包含我的用户名和密码的 mercurial_keyring 文件,但它不存在于我的 Windows 用户目录中。我已经安装了 tortoise hg,甚至在命令提示符下
我想保留两个 ~/.hgrc 文件: ~/.hgrc 和 ~/.hgrc.local - 一个具有“标准”设置(例如, username ),另一个具有特定于机器的设置(例如,设置图形合并工具)。 我
我一直在浏览 SO 和 Google 以寻求解决我的基本问题的方法,但到目前为止我还没有走运。 我是 Mercurial 的新手,刚刚在我的 Mac 上安装了它。我将它用于个人版本控制,并且不会与中央
我有一个项目使用 mercurial 进行版本控制,使用 SCons 进行构建,并使用谷歌测试来编写单元测试。 hgrc 文件 Hook 预提交并运行 SCons 以构建项目并运行单元测试。有没有办法
我们有一个 hgrc 文件,其中包含对我们开发团队的所有成员来说都是全局的设置。当我对 hgrc 文件进行更改时,我似乎无法将这些更改传播给任何克隆存储库的其他人。 有没有办法让这些配置对存储库的任何
有没有办法访问和编辑 Bitbucket 上 Mercurial 存储库的 .hgrc 文件?我说的是 Bitbucket 本身的存储库,而不是它的本地克隆。 用例是我想在 .hgrc 文件中添加以下
我想将我的主要 .hgrc 保留在修订控制中,因为我在其中进行了大量自定义,但我希望根据我使用的机器使用不同的作者姓名(工作、家庭等)。 我在 bash 脚本中执行此操作的方式是获取 Mercuria
在我的 ~/.hgrc 文件中设置特定设置之前,我可以检查 mercurial 的版本吗?例如,我想启用一个扩展(比如搁置扩展),但前提是 hg 版本是特定版本(比如 2.8 或更高版本)。当一个人的
系统级 hgrc 文件(在 /etc/mercurial 和 /etc/mercurial 中)显然是平台相关的,但我如何才能在每个用户的基础上使用平台相关的 hgrc? 用例是覆盖特定平台上的系统配
我的 .hgrc 里有很多东西文件,因此我将其保存在存储库中并在计算机之间共享。 我在 [extensions] 中启用了很多扩展部分,但我不一定要在我的所有计算机上使用所有这些。 不幸的是,每当我尝
我经常很难找到 Mercurial 加载的 hgrc 文件。 我知道可能的位置记录在 http://linux.die.net/man/5/hgrc ,但其中有相当多的东西,并且它们因平台而异,并且它
Emacs 不识别扩展名 .hgrc,因此它使用基本模式并且所有文本都是黑色的,包括注释。是否有用于编辑 .hgrc 的好模式?我如何配置 emacs 在我编辑 .hgrc 时自动使用该模式? 到目前
在哪里安装 mercurial 扩展,这样您就不必在 .hgrc 中指定它们的路径? 文档说您可以将它们放在 mercurial 路径中,但不清楚它是什么。 我想安装一些扩展,这样它们就可以供该机器上
我是一名优秀的程序员,十分优秀!