gpt4 book ai didi

git - 部分分支或部分 merge 或其他方式可以帮助我同步点文件?

转载 作者:太空狗 更新时间:2023-10-29 13:36:25 24 4
gpt4 key购买 nike

我不知道如何使我的要求简短的标题,对不起,如果它没有意义。我将在这里解释:
许多人把他们的点文件放在Bitbucket或GitHub上,以便于以后的安装或配置,在不同的PC上同步。我也做了同样的事情,但是我想做一些特别的事情,我不知道Mecurial/Git能有什么帮助。
我所拥有的:
我有三台机器,比如家庭、办公室和客户机,都是linux操作系统(可能是不同的发行版)。为了简化示例,假设我只想将一个文件.zshrc放入repo。问题是,这三个操作系统有不同的系统变量(或其他设置)。例如
office安装了jboss,然后在.zshrc中我需要导出jboss_home var。
客户端已安装Oracle,然后导出不同的VAR集。
office需要导出http_代理,但home不需要,客户端也需要,但代理值不同等。
现在我所做的是,将那些特定于机器的设置(主要是导出,alias语句)提取到另一个文件中,比如myVar.sh。并在.zshrc结尾处找到它的来源。
所以3台机器有共同的部分(相同的)和不同的部分(.zshrc)。
我想要的是:
在任何机器上,如果我找到一些好的设置,我会更改myVar.sh文件(公共部分)并推送。更改应该很容易与其他计算机同步(例如,通过pull)
如果我在家里换了.zshrc(不同的部分)并按了一下,那么如果我在办公室的机器上拉一下,就不会影响办公室的myVar.sh
我在做什么:
现在我在Bitbucket上有一个回购协议,还有三个分支(H、O、C)。在家用电脑上,我只是玩家庭分机。办公室也是,客户。
问题是,如果我在一台PC上更改了公共部分,则更改将在其自己的分支中进行,这有点难以与其他两台PC同步。因为我永远不会合并那些分支。
我还考虑为不同的电脑制作不同的目录。

/.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也是可以接受的。除了clone、push、pull、up、merge、ci之外,我没有太多git经验。
现在,我该怎么办?
还有,谢谢你读到这个…
编辑有关不同部分的详细信息
谢谢你们给我答案。如上所述,在我的真实机器中,不同的部分并不像 myVar.sh那么简单。例如,我把公司的笔记本电脑(office)带到不同的客户机(大约有6个客户机,不是所有的客户机都提供给我们个人电脑,这很好,因为我可以在任何地方使用linux),并通过cups为每个客户机配置打印机。我也会把这些配置放在回购协议中。因为如果有一天我不得不刷新我的系统,或者硬盘出现故障,我可以很容易地设置这些打印机。其他属于不同部分但我不能简单地“源xxx”如
trackpoint的xorg.conf
.hgrc文件(因为在公司中我们有自己的repo、uid、pwd、proxy…)
一些预先配置的systemd模块,基本上是.conf文件。但特定于机器,例如radeon.conf仅适用于我的家用笔记本电脑。而且客户端PC根本没有安装systemd。
这就是为什么我想到了电脑的不同目录。
正如我现在所说的,我有3个分支方式,并且有一个 myVar.sh目录,在这个目录中我有 myConf,可以将点文件、不同的conf等复制到 getConf.sh。实际上 myConf也属于不同的部分,因为脚本对于所有的pc都不一样。
因此,我认为 getConf.shthen if-else/switch在这种情况下可能不起作用。
昨天我刚拿了.zshrc,试着把例子简单化。如果这误导了你们,对不起。

最佳答案

我的首选方法是为同一目录中的每个文件都有一个特定于主机的版本——类似于同一个文件的多个目录,然后通过变量插值将其包含在主文件中。因此~/.bashrc的内部有:

if [ -f ~/.bashrc-$HOSTNAME ] ; then
source ~/.bashrc-$HOSTNAME
fi

这可能是ZSH中更漂亮的,但是这个想法是,如果某个主机特定的文件存在于它的末尾,当然,应用于所有机器的任何东西都会进入主的~/.BasHC本身。

关于git - 部分分支或部分 merge 或其他方式可以帮助我同步点文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14364444/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com