AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 6996
In Process
andrewsomething
andrewsomething
Asked: 2010-10-14 16:09:07 +0800 CST2010-10-14 16:09:07 +0800 CST 2010-10-14 16:09:07 +0800 CST

如何将“点文件”置于版本控制之下?

  • 772

Etckeeper是一个很好的工具,用于跟踪/etc. 关于它的一些关键事情真的很突出。它可以与多种 VCS 一起使用:git、mercurial、darcs 或 bzr。它还每天以及在您安装、删除或升级软件包时自动提交。它还跟踪文件权限和用户/组所有权元数据。

我还想将我的“点文件”保存在我的主目录中,并受版本控制,最好是集市。有谁知道是否有类似 etckeeper 的工具用于此目的?

最坏的情况,我想象一个简单的 cron 作业bzr add && bzr ci每天运行一次或两次,同时将~/Documents,~/Music等添加到.bzrignore 任何已经用脚本做类似事情的人?

虽然我更喜欢集市,但其他选择可能会很有趣。

configuration scripts backup bazaar version-control
  • 8 8 个回答
  • 3301 Views

8 个回答

  • Voted
  1. Robert Massaioli
    2010-10-14T18:38:27+08:002010-10-14T18:38:27+08:00

    我不知道是否有任何东西可以做到这一点,所以我使用我的存储库在这里编写了一些代码来实现你想要的:http: //github.com/robertmassaioli/config-files

    我有一个文件说明所有文件所属的位置,而 generate_links 程序只是将它们都放在那里。如果您知道自己在做什么并且可以编译一些 Haskell 代码,那么这真的很简单。虽然被警告它真的是为我自己的个人使用而制作的。

    • 7
  2. andrewsomething
    2010-10-16T11:26:51+08:002010-10-16T11:26:51+08:00

    好吧,我继续手动执行此操作,直到找到更好的解决方案。所以我不妨解释一下我做了什么。

    首先我做了一个bzr init ~,但接下来我做的是bzr ignore "*"。我决定我不想让整个事情都处于版本控制之下。这是不值得的,尤其是当您认为其中有些东西确实不应该像钥匙一样保留在 vcs 中时。所以我必须得到bzr add我想要的特定文件。您还可以将例外添加到.bzrignore. Python 正则表达式在那里也很有用。我现在保持它很苗条。如果一切顺利,我可能也会添加所有~/.config内容~/.gconf。

    我还编写了一个作为 cron 作业运行的快速脚本。它检查文件是否已更改,如果是,则自动提交:

    #! /bin/bash
    
    set -e
    
    TIME=$(date)
    STATUS=$(bzr status)
    
    if [ -n "$STATUS" ]; then
        if [ -n "$1" ]; then
             bzr ci ~ -m "$1"
        else
            bzr ci ~ -m "Automatic commit on $TIME"
        fi
    fi
    
    exit
    
    • 3
  3. Riccardo Murri
    2010-10-14T23:01:13+08:002010-10-14T23:01:13+08:00

    我将整个~目录变成了 Bazaar 存储库。存储元数据对于主目录中的文件来说不是问题:所有内容都归同一个帐户和组所有,并且bzr已经存储了执行位。

    我手动将“有趣”文件添加到其中(我不希望,例如,我的音乐收藏或 firefox 缓存受版本控制),但如果您想使用脚本自动执行此操作,我认为这是简单的解决方案bzr add && bzr ci在选定的目录或命令的输出上做find就可以完成这项工作。

    • 2
  4. tshirtman
    2012-01-29T11:51:47+08:002012-01-29T11:51:47+08:00

    我将我的 zsh 和 vim 文件保存在 git 中,放在 github 上,在不同的存储库中:

    例如,对于 zsh,我创建了“.zsh”并将 zshrc 和 zshenv 放入其中,再加上一个将 zshrc 链接到 ~/.zshrc 并将 zshenv 链接到 ~/.zshenv 的脚本,就像这样。

    while true
    do
    read -p "do you want to link zshenv to ~/.zshenv (Y/N)" yn
    case $yn in
        [Yy]*) ln -s ~/.zsh/zshenv ~/.zshenv; break;;
        [Nn]*) break;;
        *) echo "please answer yes or no";;
    esac
    done
    
    while true
    do
    read -p "do you want to link zshrc to ~/.zshrc (Y/N)" yn
    case $yn in
        [Yy]*) ln -s ~/.zsh/zshrc ~/.zshrc; break;;
        [Nn]*) break;;
        *) echo "please answer yes or no";;
    esac
    done
    

    所以我愿意

    git clone git://[email protected]:tshirtman/.zsh
    cd .zsh
    ./init.sh
    

    对于.vim,它几乎是一样的,除了我使用带有病原体的插件的子模块,所以我在init.sh中添加了它

    git submodule init
    git submodule update
    

    当我想添加一个vim插件时,我会

    git submodule add git://github.com/nathanaelkane/vim-indent-guides.git bundle/vim-indent-guides
    

    例如。

    好的,如果您要管理多个点目录,则需要做太多的工作,但是没有什么可以阻止您将它们全部放在同一个目录中,或按活动分隔(所有图形编辑器都打开,一个用于网络活动……)左右。无论如何,这就是我所做的,所以只有我的两分钱:)。

    • 2
  5. Travis B. Hartwell
    2010-10-18T14:10:10+08:002010-10-18T14:10:10+08:00

    我使用了一个不像 etckeeper 那样自动的解决方案(我必须手动提交),但它对我来说效果很好。它不像我喜欢的那样发达,但它确实有效。

    我编写了自己的实用程序,类似于GNU Stow,因为 stow 并没有做我想做的所有事情。我称之为Stow in Home。运行时,它会查找名为“HOME”的目录。然后它获取该目录下的所有内容并将其符号链接到 $HOME 中的相应位置,并根据需要创建目录。它还将翻译文件名——如果文件以“_”开头,它将被替换为“.”。我这样做是因为当它们不隐藏时编辑我的点文件会更好(默认情况下在目录列表中查看它们)。然后,它会将它们放在应用程序期望的名称中。

    所以,我有几个 git 存储库用于我的配置。我只将我个人编辑的点文件放入其中。这样做的好处是我可以有一个点文件的存储库,我可以与其他人共享(比如我的 Emacs 配置)和一个用于其他私有的存储库(例如,我的 ssh 配置,带有主机名等用于工作)。带有 stow-in-home 的符号链接将所有内容放在正确的位置,但每个的源代码控制可以是单独的。

    它对我来说效果很好。我真的没有理由不能设置一些东西来自动提交。或者将所有点文件移动到适当的存储库中,并且仍然在家中使用 stow。但这就是我做事的方式。

    • 1
  6. Sam King
    2012-06-11T18:34:00+08:002012-06-11T18:34:00+08:00

    我将文件保存在子目录中并创建符号链接。我有一个自动执行此操作的脚本。您可以在http://code.google.com/p/samking-config-files/source/browse/上查看所有内容

    • 1
  7. txwikinger
    2010-10-14T17:12:08+08:002010-10-14T17:12:08+08:00

    你不能将 tckeeper 添加dot files到 Etckeeper 中使用的存储库中吗?

    • 0
  8. Derek
    2010-10-14T18:40:26+08:002010-10-14T18:40:26+08:00

    我通过将我喜欢保留在源代码控制下的所有点文件复制到我的 /home/ 目录中名为“dotfiles”的文件夹来完成此操作。当然,这意味着保留副本并在必要时来回复制,但我发现这对我自己来说是最简单的解决方案。

    • 0

相关问题

  • 如何编写 shell 脚本来安装应用程序列表?

  • 如何使文件夹与外部 USB 硬盘保持同步?

  • 如何在键盘上映射未映射的键?[关闭]

  • Mac OS X Automator 的替代品?

  • 保持多个工作站同步

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何安装 .run 文件?

    • 7 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    如何获得 CPU 温度?

    • 21 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Marko Smith

    如何使用命令行将用户添加为新的 sudoer?

    • 7 个回答
  • Marko Smith

    更改文件夹权限和所有权

    • 9 个回答
  • Marko Smith

    你如何重新启动Apache?

    • 13 个回答
  • Marko Smith

    如何卸载软件?

    • 11 个回答
  • Marko Smith

    如何删除 PPA?

    • 26 个回答
  • Martin Hope
    NES 如何启用或禁用服务? 2010-12-30 13:03:32 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    Olivier Lalonde 如何在结束 ssh 会话后保持进程运行? 2010-10-22 04:09:13 +0800 CST
  • Martin Hope
    David B 如何使用命令行将用户添加为新的 sudoer? 2010-10-16 04:02:45 +0800 CST
  • Martin Hope
    Hans 如何删除旧内核版本以清理启动菜单? 2010-08-21 19:37:01 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve