部分分支或部分合并或其他方式来帮助我同步点文件?

2024-03-26

我不知道如何使我的要求的标题简短,如果没有意义,抱歉。我在这里解释一下:

许多人将他们的点文件放在 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).

我想要的是:

  • 在任何机器上,如果我发现一些不错的设置,我会更改.zshrc文件(公共部分)并推送。更改应该可以轻松同步到其他计算机(例如通过拉取)

  • 如果我改变了myVar.sh(不同部分)在HOME上,并推送,它不应该影响Office的myVar.sh如果我确实拉上 Office 机器。

我在做什么:

现在我在 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”,比如

  • 轨迹点的 Xorg.conf

  • .hgrc 文件(因为在公司我们有自己的存储库、uid、密码、代理..)

  • 一些预先配置的 systemd 模块,基本上是 .conf 文件。但特定于机器,例如radeon.conf 仅适用于我的家用笔记本电脑。并且客户端电脑根本没有安装systemd。

    这就是为什么我考虑为 PC 使用不同的目录。

正如我现在所说的,我有 3 个分支,并且有一个myConf目录,在这个目录中我有getConf.sh,将点文件、不同的配置等复制到myConf。事实上getConf.sh也属于不同的部分,因为所有电脑的脚本都不相同。

因此我认为if-else/switch then source在这种情况下可能不起作用。

昨天我刚刚获取了 .zshrc,并尝试使示例变得简单。如果误导了大家,还请见谅。


我首选的方法是为同一目录中的每个文件提供一个特定于主机的版本 - 类似于同一文件的多个目录,然后通过变量插值将其包含在我的主文件中。所以~/.bashrc里面有这个:

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

想必这在 zsh 中更漂亮,但其想法是,如果特定于主机的文件存在,则在最后获取它,当然,适用于所有计算机的任何内容都在主 ~/.bashrc 本身中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

部分分支或部分合并或其他方式来帮助我同步点文件? 的相关文章

  • 解决合并冲突后 Git rebase 陷入困境

    我正在运行一个遇到冲突的变基 git rebase master First rewinding head to replay your work on top of it Applying Better SelectMotifsView
  • 使用 Shell 脚本自动安装 R-Studio

    有没有办法在 Linux 系统上自动安装 R Studio 它应该自动检测操作系统并安装具有所需依赖项的 R 和 R Studio 谢谢 我准备了以下 shell 脚本来使安装完全自动化 bin bash Program R Studio
  • 是否可以同时从多个 Mercurial 存储库中提取数据?

    我希望能够做这样的事情 hg pull http server repo1 http server repo2 http otherserver repo 并让所有变更集立即下来 添加了 x 变更集 并对 z 文件进行了 y 更改 消息聚合
  • 如何使用 git format-patch 将提交压缩到一个补丁中?

    我在一个分支上有 8 个提交 我想通过电子邮件发送给一些尚未了解 git 的人 到目前为止 我所做的一切要么给我 8 个补丁文件 要么开始为分支历史记录中的每个提交提供补丁文件 从一开始 我使用 git rebase interactive
  • 带有 OAuth 访问令牌的 GitHub 克隆

    在脚本中 我尝试使用 OAuth 令牌克隆 GitHub 存储库 根据本教程 https github com blog 1270 easier builds and deployments using git over https and
  • Git 日志仅获取特定分支的提交

    我想列出仅属于特定分支的所有提交 通过以下内容 它列出了来自分支的所有提交 也列出了来自父级 主 的所有提交 git log mybranch 我发现的另一个选项是排除 master 可到达的提交并给我我想要的东西 但我想避免需要知道其他分
  • 反馈两个进程的stdin和stdout

    我有两个进程通过标准输入和标准输出相互连接 假设我有进程 A 和进程 B B 的标准输出需要输入到 A 的标准输入中 A 的标准输出需要输入到进程 B 的标准输出中 是否有一种简单的方法可以用简单的命令来表达这种关系 或者是否有一个基本的
  • 如何在 AOSP 中向预构建应用程序(无源代码)添加额外权限

    我有一个没有特定 android 权限的应用程序 例如android permission CHANGE CONFIGURATION 我没有它的源代码 我正在开发 AOSP 我预先构建了这个应用程序 如下所示 将APK放入 device m
  • 使用 Capistrano 3 部署 git 子模块

    我的项目存储库包含 Wordpress 作为 git 子模块 通过 Capistrano 3 部署时 子模块目录是空的 project wordpress images 我正在使用 git 和 deploy via remote cache
  • 如何在使用 https 克隆后通过 SSH 访问 git 存储库?

    我有一个已经在我的计算机上克隆的存储库https 我想将此存储库设置为ssh这样我就不必每次 git push 时都输入用户名和密码 关于如何转换它的任何建议https将存储库克隆到ssh而不必实际重新克隆它 这样我就可以避免一直输入我的凭
  • 小型开发团队的 Git 分支策略 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我们有一个网络应用程序 几乎每天都会更新和发布 我们使用 git 作为我们的版本控制系统 我们当前的分支策略非常简单且不完善 我们有一个主分支
  • Git 和 Dropbox - 本地存储库

    我阅读了大量有关 Dropbox 和 Git 功能结合的帖子并观看了许多视频 其中一个线程是这样的 有效地结合使用 Git 和 Dropbox https stackoverflow com questions 1960799 using
  • 用于网站的 Git / 接收后 / 测试站点和生产站点的分离

    我使用 Git 来管理网站的源代码和部署 目前测试站点和实时站点在同一个机器上运行 关注此资源http toroid org ams git website howto http toroid org ams git website how
  • 如何正确分叉本地 git 存储库?

    我有一个本地 git 存储库 我想分叉它并将其用作新项目的基础 新项目不应该将任何东西推回到原来的项目 这就是我的think我应该做 git clone originalproject newproject git remote remov
  • 每个命令重置外部差异工具

    我最近安装了一个新的差异工具 差异性的 https github com Wilfred difftastic 这扰乱了我将差异复制到剪贴板 或文件 以发送这些内容的习惯 diff external difft As per https d
  • 为什么我的 sed 命令在使用变量时失败?

    使用 bash 我尝试插入日期变量并搜索该日期的日志文件 然后将输出发送到文件 如果我像这样对日期进行硬编码 它会起作用 sed n Nov 22 2010 p file gt log file 但如果我这样做就会失败 date Nov 2
  • 使用 Bash 比较 PHP 版本号?

    我有这个脚本 应该确保用户当前的 PHP 版本在某个范围内 尽管它应该可以工作 但某个地方有一个错误 使它认为版本超出范围 有人可以看一下并告诉我我能做什么来解决它 function version echo gawk F printf d
  • 删除损坏的链接 Unix

    我想删除损坏的链接 但在此之前我想确认目录中是否存在链接文件 我们来调用一下链接A if a A then print ya A is ther fi But if A链接已损坏 那么我该如何检查 find L type l找到损坏的符号链
  • 来自外部 .diff 文件的交互式补丁

    Linux 是否有命令或程序允许交互式地修补源代码 在屏幕上打印每个块并在将其应用到文件之前等待确认 就像是git add p 但是从另一个 diff 文件中进行更改 您始终可以在 shell ruby python 中编写脚本 逐行读取该
  • 如何提供准备好的 git 提交消息?

    按照惯例 我在 git 中创建故事分支 以在其中包含 Jira 问题 ID 例如FOO 1001 我有一个脚本可以帮我做到这一点 现在 我准备了另一个脚本 用于从 Jira API 获取 FOO 1001 的标题 我想在输入时实现这一目标

随机推荐

  • Jena 桌面 SPARQL 客户端 (TDB)?

    我正在开发一个使用 Jena 进行存储 带有 TDB 后端 的应用程序 我正在寻找类似 Squirrel 的东西 它可以让我看到正在存储的内容 运行查询等 这似乎是一个明显需要的东西 但我的 可能措辞不好 谷歌查询没有出现任何有希望的东西
  • 为什么Dictionary没有AddRange?

    标题已经足够基本了 为什么我不能 Dictionary
  • 如何根据当前平台跳过 xUnit 中的特定测试

    我有一个在 Windows 上构建的程序集 我想在 Linux 中的 mono 上运行 xUnit 测试 然而 我发现虽然其中 400 个测试可以 按顺序 运行 但某些测试要么挂起 xUnit 运行程序 要么完全崩溃 I don t car
  • 向 monaco 编辑器提供类型提示

    我正在尝试使用 Monaco 编辑器向 javascript 编辑器提供智能感知 代码补全 该代码必须是有效的 javascript 而不是 typescript 假设一些用户输入了这样的脚本 function onMyEvent even
  • PHP 中的安全用户图像上传功能

    我正在为我的网站实现一个基于用户的图像上传工具 系统应允许任何用户仅上传 JPEG 和 PNG 文件 当然 我担心安全性 所以我想知道许多比我聪明的人对以下允许上传的检查有何感受 1 首先将 PHP 中允许的文件扩展名列入白名单 仅允许 P
  • WCF 不序列化所有属性

    我正在使用已作为 VS2010 中的服务引用导入的 SOAP 服务 我使用服务提供的请求对象来调用其中一项服务 我遇到的问题是 并非对象的所有属性都被序列化 或者不是通过线路发送 请求对象如下所示 var serviceRequest ne
  • CountIf 与过滤后的数据

    我正在研究一种方法来计算数据列中零的数量 即使数据被过滤 我找到了以下解决方案 SUMPRODUCT SUBTOTAL 3 OFFSET B2 B18 ROW B2 B18 MIN ROW B2 B18 1 ISNUMBER SEARCH
  • 使用 PHP 获取目录的层次结构

    我正在尝试查找指定目录下的所有文件和文件夹 例如我有 home user stuff 我想回来 home user stuff folder1 image1 jpg home user stuff folder1 image2 jpg ho
  • Python“for in”循环打印列表中的最后一项

    最近我了解了列表和for循环 以及命令 pop 指示并删除列表中的最后一项 所以我尝试编写一段代码来一项一项地删除列表中的最后一项 直到只剩下一项 代码是 list A a b c d e f g h i j for i in list A
  • Javascript 缩小并插入分号

    是否有任何 Javascript 压缩器 压缩器可以根据需要插入分号 或者 可以处理不使用分号的源代码 我已经开始使用一个非常棒的库 但开发人员认为分号是 不必要的混乱 几年前 当我遇到类似的情况时 我似乎记得解决方案本质上是 越多越好 首
  • 如何说服我的同事不要使用数据集进行企业开发(.NET 2.0+)

    与我一起工作的每个人都痴迷于以数据为中心的企业开发方法 并且讨厌使用自定义集合 对象的想法 说服他们的最佳方法是什么 以身作则 谨慎行事 任何更强的东西只会让你与团队的其他成员疏远 请记住考虑他们可能发现了您错过的东西 成为团队的一员意味着
  • 没有名为“sklearn.utils.线性_分配_”的模块

    I am trying to run a project from github https github com cfotache pytorch objectdetecttrack every object counter applic
  • 当我将用户控件拖到设计视图上时,Visual Studio 引发错误

    我有两个用户控件 其中一个是一个简单的图片夹 其中有一个复选框 另一个充当容器 而不是包含前一个控件的集合 So a 水平图片滚动可以有很多可选图片控制 我将粘贴每个控件的小代码 First 水平图片滚动 using System usin
  • 按 API 密钥使用 AWS API Gateway

    如何通过 API 密钥从 AWS API Gateway 获取使用指标 例如使用计数器 使用日志等 我目前正在发送x api key到我的集成端点进行手动日志记录 我不想这样做 而是让 AWS API Gateway 为我测量和报告此指标
  • 使用 glfw3 glew 和 opengl 在 Visual Studio 社区中获取访问冲突异常

    我遇到这个问题已经有一段时间了 但出于我的爱 我无法找到解决方案 我想渲染一个简单的三角形 但在编译程序时 我不断在 Visual Studio 中获得此输出 注意 gt 我不认为这不是链接问题而是其他问题 我已经检查了我的链接器无数次 一
  • 对数据进行排序以在 python 中从高到低呈现条形图

    我有很多出现的数字 想将它们绘制在条形图 如直方图 中 我已经让图表正常工作 但它是按照我输入值的顺序排列的 而不是从最高到最低的顺序 这正是我想要的 这是到目前为止的代码 phenos 128 20 0 144 4 16 160 136
  • 从 C# DbCommand 将 NULL 插入 SQL DB

    DbParameter param comm CreateParameter param comm CreateParameter param ParameterName StaffId if string IsNullOrEmpty ac
  • 使用 Grok for Logstash 解析 Apache2 错误日志

    我试图解析我的 apache2 错误日志 但遇到了一些麻烦 它似乎与过滤器不匹配 我很确定时间戳部分是错误的 但我不确定 而且我真的找不到任何文档来解决它 另外 有没有办法获取其中的内容fields errmsg to me message
  • Objective-c 中的大括号

    Note 我的问题是基于检查后this https stackoverflow com questions 9704083 unnecessary curly braces in c以及它的答案 在一些更大的方法中 有些代码您只想在一段时间
  • 部分分支或部分合并或其他方式来帮助我同步点文件?

    我不知道如何使我的要求的标题简短 如果没有意义 抱歉 我在这里解释一下 许多人将他们的点文件放在 bitbucket 或 github 上 以方便以后的安装或配置 在不同的电脑上同步 我做了同样的事情 但是我想做一些特别的事情 我不确定 m