【问题标题】:suggestions for using PATH to executables with version control (Mercurial)对带有版本控制的可执行文件使用 PATH 的建议(Mercurial)
【发布时间】:2009-11-13 02:20:51
【问题描述】:

所以我对版本控制很陌生,但我正在尝试在我的 Mac 上使用 Mercurial 来保持大型 Python 数据分析程序的组织性。我通常克隆我的主存储库,稍微调整一下克隆的代码,然后在我的数据上运行代码。如果更改成功,我将提交并最终将更改推送回我的主存储库。我想这是版本控制下非常典型的工作流程。

我的问题是我的代码在命令行上运行,有几个命令行参数引用当前工作目录中的数据文件(我有很多这样的目录我需要在其中测试代码,它们'不在版本控制范围内)。因此,在使用 Mercurial 之前,我只是将代码保存在一个 ~/bin 目录中,该目录是我的 PATH 环境变量的一部分。现在,使用版本控制,我需要(1)在每次编辑后,将我当前克隆的可执行文件复制到 ~/bin 目录,然后在命令行上运行代码,或者(2)每次我克隆我的代码时,添加我的当前克隆到 PATH 的路径,或者 (3) 每次运行代码时在命令行上指定整个/path/to/my/programs。这些都不是很方便,我觉得必须有一个我不知道的优雅解决方案。也许涉及到 Mercurial 的钩子?我希望我的未修改代码能够在两次提交之间的命令行上运行,所以这似乎排除了钩子,但我不知道......非常感谢您的任何建议!

【问题讨论】:

    标签: mercurial binary path environment-variables


    【解决方案1】:

    如果您想继续使用多克隆工作流程,Ry4an 的回答很好。但同样值得一提的是,Mercurial 的强大功能足以让您获得该工作流程的大部分好处,而无需离开您的单个“主”存储库。 IE。您可以为实验性功能创建分支(命名或匿名),轻松“hg update”到您想要测试的任何版本的代码,甚至使用 mq 扩展来修剪不起作用的分支。

    【讨论】:

    • 感谢 Carl,我不明白分支和克隆之间的区别。如果其他人在 Mercurial 学习曲线上处于同一位置,这里有一个很好的比较分支代码的不同方法:stevelosh.com/blog/entry/2009/8/30/… 我认为“使用命名分支进行分支”最适合我的工作流程 - 单个工作目录可以在我的 PATH 中;我正在测试的各种代码迭代都获得了名称以使我保持井井有条,并且我可以“更新”任何我想要的内容,并按照您的建议使用 mq 修剪我的失败。再次感谢!
    【解决方案2】:

    在这种情况下,我要做的是在我当前的克隆中为我的二进制文件设置两个深的符号链接链。例如,我将拥有:

    /usr/bin/myappname
    

    这是一个符号链接

    /home/me/repos/CURRENT/bin/myappname
    

    /home/me/repos/CURRENT 是我当前工作克隆的符号链接,例如:

    /home/me/repos/myproject-expirment
    

    设置初始 /usr/bin/myappname 符号链接后,我所要做的就是在创建我正在使用的新克隆时更新 CURRENT 符号链接。

    【讨论】:

    • 感谢 Ry4an,我没有想到符号链接,但它们肯定会比我现在所做的有所改进(将当前二进制文件复制到我的 bin 目录)。
    猜你喜欢
    • 1970-01-01
    • 2013-02-08
    • 2014-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多