我正在尝试让 Mercurial 在 Windows 构建服务器上工作,但遇到了问题。我不厌其烦地设置了 mercurial keychain(我必须安装 tortoisehg),它在每个用户的基础上工作。
问题是我使用 Bamboo 来运行构建,它作为 SYSTEM 拥有的 NT 服务运行。因此,每当它尝试对 hg 做任何事情时,都会提示输入密码。
显然,我可以将密码放入配置文件中,但我想避免随意使用明文密码。
据我所知,有两种方法可以解决这个问题。我都不知道该怎么做:
提前感谢您提供的任何见解!
-本
最佳答案
我知道您已经找到了解决方案,但如果 future 的 Google 员工来到这里,我会发布我所做的。
首先,您可以让 bamboo 服务以您想要的任何用户身份运行。我需要它以普通用户身份运行,以便我的编译器需要的一些注册表项可用。要为 bamboo 服务设置用户,您需要在正常安装时编辑 wrapper.conf(C:\Program Files\Bamboo\conf\wrapper.conf。 ) 显然,在编辑之前,您需要卸载现有服务(如果已安装)。
设置登录帐户最简单的方法是将其添加到文件底部
wrapper.ntservice.account=domain\username
wrapper.ntservice.password=s3cr3t.p@ssw0rd
显然,您可能不希望您的登录密码在纯文本文件中。有几种方法可以解决这个问题,所以我只向您指出:http://wrapper.tanukisoftware.com/doc/english/props-nt.html . wrapper.ntservice.password.prompt 可能特别有趣。
如果您对 Mercurial 使用 ssh,还有另一种选择:您可以在 Mercurial.ini 中设置您的 ssh 命令。对于构建服务器,我通过在 C:\Program Files\TortoiseHg\hgrc.d 中的一个文件中配置这些命令,一次性为整个系统设置这些命令中的大部分。我有一行看起来像:
ssh=TortoisePlink.exe -batch -i "C:/Users/autobuilder/hgPrivKey.ppk" -l autobuilder
对我来说,autobuilder 是运行事物的普通用户。 hgPrivKey.ppk 是使用 PuttyGen 创建的私钥文件。我在服务器上的 authorized_keys 文件中有公钥。
希望这些建议能让某人走上正轨。
关于Windows Mercurial 全局钥匙串(keychain),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7590200/
我有一个gem,它有一个根据Rails.env的不同行为的方法:defself.envifdefined?(Rails)Rails.envelsif...现在我想编写一个规范来测试这个代码路径。目前我是这样做的:Kernel.const_set(:Rails,nil)Rails.should_receive(:env).and_return('production')...没关系,只是感觉很丑。另一种方法是在spec_helper中声明:moduleRails;end而且效果也很好。但也许有更好的方法?理想情况下,这应该有效:rails=double('Rails')rails.sho
我正在尝试将$stdout设置为临时写入一个文件,然后返回到一个文件。test.rb:old_stdout=$stdout$stdout.reopen("mytestfile.out",'w+')puts"thisgoesinmytestfile"$stdout=old_stdoutputs"thisshouldbeontheconsole"$stdout.reopen("mytestfile1.out",'w+')puts"thisgoesinmytestfile1:"$stdout=old_stdoutputs"thisshouldbebackontheconsole"这是输出。r
在许多ruby类之间共享记录器实例的最佳(正确)方法是什么?现在我只是将记录器创建为全局$logger=Logger.new变量,但我觉得有更好的方法可以在不使用全局变量的情况下执行此操作。如果我有以下内容:moduleFooclassAclassBclassC...classZend在所有类之间共享记录器实例的最佳方式是什么?我是以某种方式在Foo模块中声明/创建记录器还是只是使用全局$logger没问题? 最佳答案 在模块中添加常量:moduleFooLogger=Logger.newclassAclassBclassC..
如何在出现异常时指定全局救援,如果您将Sinatra用于API或应用程序,您将如何处理日志记录? 最佳答案 404可以在not_found方法的帮助下处理,例如:not_founddo'Sitedoesnotexist.'end500s可以通过调用带有block的错误方法来处理,例如:errordo"Applicationerror.Plstrylater."end错误的详细信息可以通过request.env中的sinatra.error访问,如下所示:errordo'Anerroroccured:'+request.env['si
我读过这个:Let’sstartwithasimpleRubyprogram.We’llwriteamethodthatreturnsacheery,personalizedgreeting.defsay_goodnight(name)result="Goodnight,"+namereturnresultend我的理解是,方法是定义在类中的函数或子程序,可以关联到类(类方法)或对象(实例方法)。那么,如果它不是在类中定义的,怎么可能是方法呢? 最佳答案 当你在Ruby中以这种方式在全局范围内定义一个函数时,它在技术上变成了Obje
假设我有:get'/'do$random=Random.rand()response.body=$randomend如果我每秒有数千个请求到达/,$random是否会被共享并“泄漏”到上下文之外,或者它会像getblock的“本地”变量一样?我想如果它是在get'/'do的上下文之外定义的,它确实会被共享,但我想知道在ruby中是否有我不知道的$机制。 最佳答案 ThispartoftheSinatraREADMEaboutscopeisalwayshelpfultoread但是,如果您只需要为请求保留变量,那么我认为我建议使用
我正在尝试将全局导航菜单项添加到我的ActiveAdmin安装(在“仪表板”导航按钮旁边)。ActiveAdmin说这在他们的网站上是可能的,但他们没有任何关于如何实现它的文档。有谁知道如何做到这一点?编辑:抱歉,我应该更清楚。我想添加一个指向由任意文本/链接对组成的全局导航的链接。IE,如果我想添加一个链接到http://google.com在事件管理员的全局导航中使用文本“Google”,我将如何实现? 最佳答案 ActiveAdmin.register_page"Google"domenu:priority=>1,:label
在回答另一个问题时,我意识到下面的程序并没有完全按照我的想法去做。puts"test"self.puts"test"#=>privatemethod`puts'calledformain:Object(NoMethodError)异常让我感到惊讶,因为我一直认为顶级方法调用将由main对象实例解决,但事实似乎并非如此。谁是第一个电话的实际接收者?如何解决?这是仅适用于顶级范围内的方法调用的特殊规则吗? 最佳答案 这是一个gooddiscussion说的就是这个问题。顶级方法,由Kernel提供,自动包含在Object类中。这意味着内
我正在使用Rails5beta的开箱即用的普通测试套件。我想知道是否有人知道如何运行全局设置并拆除。这是我在任何测试开始之前启动一个内存中的Elasticsearch集群并在测试完成后停止该集群所必需的原因。Rspec不是一个选项。 最佳答案 在Minitest(这是Rails4+中的默认测试环境)下,要获得“全局设置”行为,只需在test_helper.rb中运行任何内容即可。(在测试本身或任何setup方法之外),即在您从中加载测试环境的文件中。测试助手通常在测试中需要,因此它的代码在任何测试之前运行一次。对于“全局拆解”,Mi
我正在学习Ruby(2.0),这让我很吃惊:s="1234"s=~/\d+/$&==>"1234"#asexpected,$&containsthematchedstring$&.slice!(-2..-1)#shouldmutatestring$&==>"1234"#what?s.slice(-2..-1)s==>"12"#asexpectedslice!方法应该改变字符串。其他增变器方法的行为方式相同。我的问题:为什么这不会引发错误,这是我在函数无法执行它所说的操作时所期望的?这在某处记录了吗?有道理吗?更新所以,我看到$&的行为不像全局变量。每个对它的引用都会给出一个新对象,就好