我不知道如何使我的要求的标题简短,如果没有意义,抱歉。我在这里解释一下:
许多人将他们的点文件放在 bitbucket 或 github 上,以方便以后的安装或配置,在不同的电脑上同步。我做了同样的事情,但是我想做一些特别的事情,我不确定 mecurial/git 有什么帮助。
我拥有的:
我有 3 台机器,分别是 Home、Office 和 Client,都是 Linux 操作系统(可能是不同的发行版)。为了使示例简单,假设我只想将一个文件.zshrc
进入回购协议。问题是,三个操作系统具有不同的系统变量(或其他设置)。例如
- Office安装了JBOSS,然后在
.zshrc
我需要导出 JBOSS_HOME 变量。
- 客户端安装了 Oracle,然后导出不同的变量集。
- Office必须导出HTTP_PROXY,但HOME不需要,客户端也需要它,但代理值不同等。
现在我所做的是,将这些机器特定设置(主要是导出、别名语句)提取到另一个文件中,例如myVar.sh
。并在末尾获取它.zshrc
.
所以3台机器有共同的部分(相同.zshrc
),以及不同的部分(myVar.sh
).
我想要的是:
我在做什么:
现在我在 bitBucket 上有一个 Repo,以及三个分支(H、O、C)。在家庭电脑上,我只玩家庭分支。办公室、客户端也一样。
问题是,如果我更改了一台电脑上的公共部分,则更改位于其自己的分支中,很难同步到其他两台电脑。因为我永远不会合并这些分支。
我还考虑为不同的电脑创建不同的目录。例如
/.zshrc
|--/HOME/myVar.sh
|--/Office/myVar.sh
|--/Client/myVar.sh
并编写 shell 脚本,例如检查 $HOST 来决定写入myVar.sh
到哪个目录。但我怀疑这是否是实现我目标的最佳方式。当我查看我的 dotfiles 目录时,我看到了所有 3 件的设置。我应该小心并输入正确的内容来读取文件。
在现实世界中,公共部分包含的内容远不止 .zhsrc (tmux、vimrc、xdefault..),不同部分也是如此。
我不知道我们能否以某种方式创建部分分支或在存储库上进行部分合并......
我使用hg比git多得多,如果hg可以解决它我更喜欢hg,如果不能,git也可以接受。除了克隆、推送、拉取、向上、合并、ci 之外,我没有太多 git 经验。
now, 我应该怎么做?
并且,感谢您阅读本文...
EDIT更多关于不同部分的信息
我要感谢大家给我答案。正如我上面所说,我的真机中的不同部分并不那么简单myVar.sh
。例如,我将我公司的笔记本电脑(Office)带到不同的客户端(大约有6个客户端,并非所有客户端都为我们提供PC,这很好,因为我可以在任何地方使用Linux),并通过cups为每个客户端配置打印机。我也会将这些配置放入 Repo 中。因为如果有一天我必须刷新我的系统,或者硬盘出现故障,我可以非常轻松地设置这些打印机。其他属于不同部分的东西,但我不能简单地“source xxx”,比如
正如我现在所说的,我有 3 个分支,并且有一个myConf
目录,在这个目录中我有getConf.sh
,将点文件、不同的配置等复制到myConf
。事实上getConf.sh
也属于不同的部分,因为所有电脑的脚本都不相同。
因此我认为if-else/switch
then source
在这种情况下可能不起作用。
昨天我刚刚获取了 .zshrc,并尝试使示例变得简单。如果误导了大家,还请见谅。