threads / discuss / 13816

Sharing home and etc files with git

Subject: Sharing home and etc files with git

## tl;dr

3 messages between Jun 5, 2008 and Jun 5, 2008.

replies: 2people: 3as markdown or json

iiijjjiii· Jun 5, 2008, 20:01 UTC · lore

I would like to use git to keep revision histories of my home and etc directories. I have several computers and I like to keep their environments similar. I could see git pulls updating .bash_aliases, .bashrc, and various bash and perl scripts I create in the home directory, and updating /etc config files. Git pushes would share any recent changes to other computers. This way no matter which computer I am working on, the environment will be similar and I can make changes and know they will be copied to the others.

I haven't figured out a good way to deal with the files that have local settings in them. Using .gitignore feels a little overkill. Only certain lines of the files need to be unique. Once they are set, I'd like subsequent changes to be updated. I could cherry-pick manually but I'd like a more automated method. I have read about etckeeper, git-home-history and gibak, but they seem to be designed for backing up and versioning files on one computer and not for sharing files.

Has anyone done something similar using git or is another tool more suitable.

Thanks jimk

Miklos Vajna· Jun 5, 2008, 20:50 UTC · re: iiijjjiii · lore

Re: Sharing home and etc files with git

On Thu, Jun 05, 2008 at 04:01:11PM -0400, iiijjjiii <iiijjjiii@gmail.com> wrote:
> I would like to use git to keep revision histories of my home and etc 
> directories.

First, git is to track content, not permissions. So it is not the right tool.

Second, you can try etckeeper which does this on top of git.

But still please keep in mind that you may have serious problems, like: if you get a conflict in /etc/passwd, you may not be able to login, etc...

Kelvie Wong· Jun 5, 2008, 22:48 UTC · re: iiijjjiii · lore

Re: Sharing home and etc files with git

On 6/5/08, iiijjjiii <iiijjjiii@gmail.com> wrote:
Show 8 quoted lines
> I would like to use git to keep revision histories of my home and etc
> directories. I have several computers and I like to keep their environments
> similar. I could see git pulls updating .bash_aliases, .bashrc, and various
> bash and perl scripts I create in the home directory, and updating /etc
> config files. Git pushes would share any recent changes to other computers.
> This way no matter which computer I am working on, the environment will be
> similar and I can make changes and know they will be copied to the others.
>

Completely understandable; also remember that pushing, unlike pulling, does not update the working tree (and you wouldn't want it to).

Show 11 quoted lines
>  I haven't figured out a good way to deal with the files that have local
> settings in them. Using .gitignore feels a little overkill. Only certain
> lines of the files need to be unique. Once they are set, I'd like subsequent
> changes to be updated. I could cherry-pick manually but I'd like a more
> automated method. I have read about etckeeper, git-home-history and gibak,
> but they seem to be designed for backing up and versioning files on one
> computer and not for sharing files.
>
>  Has anyone done something similar using git or is another tool more
> suitable.
>

I'm fairly certain there are tools out there for this, but what I do is I have all of the files that I want to add (such as ~/.${SHELL}rc, ~/.${SHELL}.d/*, and .emacs) into ~/.git-home; then I symlink all of these files/directories into my $HOME (with a short script that's also checked in).

I then throw this entire repo somewhere where all my other machines can pull/push from, and I resolve merges as needed. It works fairly well.

-- 
Kelvie Wong

← back to recent threads