我在源码控制中维护点文件的技巧
创始人
2024-03-02 10:03:12
0次

当你把环境保持在源码控制中,开发虚拟机和容器就成了一个解决方案,而不是一个问题。

你是否曾经开始使用一台新的电脑,不管是出于自愿还是因为旧的电脑让你的魔法烟消云散,并且对花了多长时间才把所有东西都 弄好 而感到沮丧?更糟糕的是,有没有花了一些时间重新配置你的 shell 提示符,然后意识到你更喜欢以前的样子?

对我来说,当我决定要在 容器 中进行开发时,这个问题就变得很严重了。容器是非持久的。开发工具很容易解决:一个带有工具的容器镜像就可以工作。源码很容易解决:源码控制维护它,开发是在分支上。但是,如果每次我创建一个容器,我都需要仔细地配置它,这就太痛苦了。

主目录的版本控制

将配置文件保存在版本控制中一直是一个有吸引力的选择。但是天真地这么做是令人担忧的。不可能直接对 ~ 进行版本控制。

首先,太多的程序认为把秘密放在那里是安全的。此外,它也是 ~/Downloads 和 ~/Pictures 等文件夹的位置,这些文件夹可能不应该被版本化。

小心翼翼地在主目录下保留一个 .gitignore 文件来管理 include 和 exclude 列表是有风险的。在某些时候,其中一个路径会出错,花费了几个小时的配置会丢失,大文件会出现在 Git 历史记录中,或者最糟糕的是,秘密和密码会被泄露。当这一策略失败时,它就成了灾难性的失败。

手动维护大量的符号链接也是行不通的。版本控制的全部原因是为了避免手动维护配置。

写一个安装脚本

这暗示了在源码控制中维护点文件的第一条线索:写一个安装脚本。

就像所有好的安装脚本一样,让它 幂等:运行两次不会两次增加配置。

像所有好的安装脚本一样,让它 只做最少的事情:使用其他的技巧来指向你的源码控制中的配置文件。

~/.config 目录

现代 Linux 程序在直接在主目录中寻找配置之前,会先在 ~/.config 中寻找。最重要的例子是 git,它在 ~/.config/git 中寻找。

这意味着安装脚本可以将 ~/.config 符号链接到主目录中源码控制的管理目录中的一个目录:

#!/bin/bash
set -e
DOTFILES="$(dirname $(realpath $0))"
[ -L ~/.config ] || ln -s $DOTFILES/config ~/.config

此脚本寻找它的位置,然后将 ~/.config 链接到它被签出的地方。这意味着几乎没有关于它需要位于主目录中的位置的假设。

获取文件

大多数 shells 仍然直接在主目录下寻找文件。为了解决这个问题,你要增加一层指示。从 $DOTFILES 中获取文件意味着在修改 shell 配置时不需要重新运行安装程序。

$!/bin/bash
set -e
DOTFILES="$(dirname $(realpath $0))"
grep -q 'SETTING UP BASH' ~/.bashrc || \
  echo "source $DOTFILES/starship.bash # SETTING UP BASH" >> ~/.bashrc

再次注意,这个脚本很仔细地做了幂等:如果这一行已经在那里了,它就不会再添加。它还考虑到了你在 .bashrc 上已经做的任何编辑,虽然这不是一个好主意,但也没有必要惩罚它。

反复测试

当你把环境保持在源码控制中时,开发虚拟机和容器就成了一个解决方案,而不是一个问题。试着做一个实验。建立一个新的开发环境,克隆你的点文件,安装,并看看有什么问题。

不要只做一次。至少每周做一次。这将使你更快地完成工作,同时也会告诉你什么是不可行的。暴露问题,修复它们,然后重复。


via: https://opensource.com/article/22/2/dotfiles-source-control

作者:Moshe Zadka 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

相关内容

热门资讯

“Linux 中国” 开源社区... 这是一个艰难的决定 —— 这不是调侃,而是当你真正做出改变了你十几年生活轨迹的决定时,你就会明白这个...
硬核观察 #1263 德国铁路... #1 德国铁路公司招聘 Windows for Workgroups 3.11 管理员该职位要求了解...
人工智能教程(七):Sciki... 在本系列的 上一篇文章 中,我们用 TensorFlow 构建了第一个神经网络,然后还通过 Kera...
关闭 WSL 中正在运行的 L... 以下是使用 WSL 关闭在 Windows 内运行的 Linux 系统的不同方法。你使用 WSL 在...
MX Linux 23.2 “... 最新的 MX Linux 23.2 小版本更新带来了基本的改进和新增功能。MX Linux 推出了 ...
硬核观察 #1262 网络上最... #1 网络上最古老的软件存档库之一即将关闭美国新墨西哥州立大学(NMSU)最近宣布,即将于 2024...
如何在 RHEL 上通过绑定配... 在 Linux 中,你可以根据自己的需要创建高级网络设置,如 网络绑定 Network Bondin...
Linux Matrix 消息... Matrix 用户可以升级 Fractal 6 了!Fractal 是目前 最好的 Matrix 客...
如何通过 VLC 使用字幕 使用 VLC 媒体播放器播放和管理字幕的新手指南。我是一个超级动漫迷,如果你想观看最新的剧集,那么你...
硬核观察 #1261 X 计划... #1 X 计划在奥斯汀建立内容审核总部据报道,该部门将招聘 100 名全职员工,将主要关注 CSE ...