如何解决使用 conda envs 混淆工作流程问题 背景Conda 和 Git 的耦合双副本配置
我正在开发一个程序并安排它每天使用 bash 脚本运行。我有两个程序分支:
master
dev
我在 dev
工作,并在工作完成时与 master
合并。计划任务旨在仅在 master
分支上运行。我为生产内容创建了一个新的 conda env,并且我有一个用于开发的主要 conda env。但是,即使我在 bash 中激活生产环境,它仍然在 dev
分支上,这会导致很多问题。
我应该为此目的设置什么合适的结构?
解决方法
不确定这样的工作流程是否有“适当的结构”。我将分享我的想法,但这更多是为了告知工作流程设计,而不是提供具体建议。
背景
Conda 环境管理 shell 状态,而 git 分支在文件系统级别管理事物。实际上,它们按照设计是独立的。人们可以手动将它们连接起来,但我只会在非常谨慎并完全了解所涉及的风险的情况下这样做。我主要担心的是文件系统状态(例如由 git 管理)会影响所有 shell 会话,因此在 Conda 环境中包括状态突变(例如,自动分支切换)将影响在给定路径中工作的所有环境。>
Conda 和 Git 的耦合
考虑到这一点,Conda 环境将执行放置在 <env_dir>/etc/conda/(de|)activate.d/
中的任意 shell 脚本。因此,理论上,可以在 activate.d
文件夹中添加一个脚本以确保 git 存储库已检出 main
分支。您可能还想在 deactivate.d
文件夹中放置一个对称脚本以恢复以前的活动分支。
要考虑的可预见情况是脚本由于未暂存更改而无法切换分支时会发生什么情况。它应该简单地失败吗?它应该存储、记录并继续吗?还有什么?
双副本配置
就我个人而言,我可能会在不同的位置保留两份 git 存储库副本:一份已签出 dev
,另一份始终已签出 main
。这样,一个人可以继续在一个分支上工作,而执行分支总是停留在 main
上。然后我会使用 activate.d
脚本来确保每次执行前 main
都与上游同步。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。