Ken*_*ent 4 git shell mercurial dotfiles
我不知道如何使我的要求在标题中缩短,对不起,如果它没有意义.我会在这里解释一下:
许多人将他们的dotfiles放在bitbucket或github上,以方便以后的安装或配置,在不同的PC上同步.我做了同样的事情,但是我想做一些特别的事情,我不确定mecurial/git是如何帮助的.
是)我有的:
我有3台机器,比如Home,Office和Client,所有linux操作系统(可能是不同的发行版).为了使示例简单,请说我只想将一个文件.zshrc放入repo.问题是,三个操作系统有不同的系统变量(或其他设置).例如
.zshrc我需要导出JBOSS_HOME var. 我现在所做的是,我将那些机器特定的设置(主要是导出,别名声明)提取到另一个文件,比方说myVar.sh.并在结尾处采购.zshrc.
所以3台机器有共同的部分(相同.zshrc)和不同的部分(myVar.sh).
我想要的是:
在任何机器上,如果我找到了一些不错的设置,我会更改.zshrc文件(公共部分)并推送.这些更改应该很容易与其他机器同步(例如,拉动)
如果我myVar.sh在HOME上更改了(不同的部分)并推送,myVar.sh如果我拉上Office机器,它不应该影响Office .
我在做什么:
现在我在bitBucket上有一个Repo,还有三个分支(H,O,C).在家用电脑上,我只是玩Home分支.对于Office,Client也是如此.
问题是,如果我在一台PC上更改了公共部分,那么更改就在它自己的分支中,有点难以同步到另外两个.因为我永远不会合并那些分支.
我也想到为不同的电脑mk不同的目录.例如
/.zshrc
|--/HOME/myVar.sh
|--/Office/myVar.sh
|--/Client/myVar.sh
Run Code Online (Sandbox Code Playgroud)
并编写shell脚本,例如检查$ HOST以决定写入myVar.sh哪个目录.但我怀疑,如果这是实现我的目标的最佳方式.当我看到我的dotfiles目录时,我看到所有3个人的设置.我应该小心并输入正确的一个来读取文件.
在现实世界中,公共部分包含的不仅仅是.zhsrc(tmux,vimrc,xdefault ..),不同的部分也是如此.
我不知道我们可以以某种方式制作部分分支或在存储库上进行部分合并...
我使用hg远远超过git,如果hg可以解决它我宁愿hg,如果没有,git也是可以接受的.我没有太多git经验,除了克隆,推,拉,上,合并,ci.
现在,我该怎么办?
并且,感谢您阅读此...
编辑更多关于不同部分的内容
我要感谢所有人给我答案.正如我上面所说,我真机中的不同部分并不那么简单myVar.sh.例如,我将我的公司 - 笔记本电脑(Office)带到不同的客户端(大约有6个客户端,并非所有客户端都为我们提供PC,这很好,因为我可以随处使用Linux),并为每个客户配置打印机.我也会把这些配置放在Repo中.因为如果有一天我必须刷新我的系统,或硬盘失败,我可以很容易地设置这些打印机.其他属于不同部分的东西,但我不能简单地"源xxx"之类的
一些预配置的systemd模块,基本上是.conf文件.但机器特定,例如radeon.conf仅适用于我的家用笔记本电脑.并且客户端PC根本没有安装systemd.
这就是我为PC考虑不同目录的原因.
正如我现在所说的那样,我有3个分支方式,并且myConf在我的目录中有一个目录getConf.sh,用于复制dotfiles,不同的confs等myConf.实际上也getConf.sh属于不同的部分,因为脚本对于所有的pc都不相同.
因此,我认为if-else/switch当时source可能不适用于这种情况.
昨天我刚拿了.zshrc,试着让这个例子变得简单.如果它误导了你们,对不起.
我这样做的首选方法是在同一目录中为每个文件设置一个特定于主机的版本 - 类似于同一个文件的多个目录,然后在我的主文件中通过变量插值包含它.所以~/.bashrc内在这个:
if [ -f ~/.bashrc-$HOSTNAME ] ; then
source ~/.bashrc-$HOSTNAME
fi
Run Code Online (Sandbox Code Playgroud)
据推测,这在zsh中甚至比较漂亮,但是想法是在最后是否存在特定于主机的文件,当然所有适用于所有机器的文件都在主〜/ .bashrc本身.
| 归档时间: |
|
| 查看次数: |
406 次 |
| 最近记录: |