Slide 1

Slide 1 text

Using dfm managing your dotfiles with perl and git by Nate Jones LA.pm - 9/21/2011

Slide 2

Slide 2 text

about me

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

github: justone twitter: @ndj http://endot.org

Slide 5

Slide 5 text

Slide 6

Slide 6 text

in the beginning

Slide 7

Slide 7 text

.bashrc .vimrc

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

version control!

Slide 13

Slide 13 text

Ready, set, go! ssh firstbox svn import . $MTSVN -m 'initial' ssh secondbox svn checkout $MTSVN . svn add/commit/update

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

brave new world

Slide 19

Slide 19 text

Requirements accessible anywhere shareable quick to install/update easy to modify

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

Prior work many shared dotfiles repos clone and symlink make, shell, ruby

Slide 23

Slide 23 text

let's try it out

Slide 24

Slide 24 text

Step 0 fork on github: https://github.com/justone/dotfiles set up your own master repo

Slide 25

Slide 25 text

Installation $ git clone [email protected]:username/dotfiles.git .dotfiles Cloning into .dotfiles... remote: Counting objects: 1685, done. remote: Compressing objects: 100% (830/830), done. remote: Total 1685 (delta 714), reused 1632 (delta 689) Receiving objects: 100% (1685/1685), 1.19 MiB | 438 KiB/s, done. Resolving deltas: 100% (714/714), done. $ ./.dotfiles/.bin/dfm INFO: Installing dotfiles... INFO: Symlinking .bashrc.load (.dotfiles/.bashrc.load). INFO: Symlinking bin (.dotfiles/bin). INFO: Appending loader to .bashrc

Slide 26

Slide 26 text

Adding a file $ vi .vimrc $ mv .vimrc .dotfiles $ dfm install INFO: Installing dotfiles... INFO: Symlinking .vimrc (.dotfiles/.vimrc). $ dfm add .vimrc $ dfm status -s A .vimrc $ dfm commit -m 'added vimrc' [master 6c12a63] adding vimrc 1 files changed, 1 insertions(+), 0 deletions(-) create mode 100644 .vimrc $ dfm push origin master Counting objects: 4, done. Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 265 bytes, done. Total 3 (delta 1), reused 0 (delta 0) To [email protected]:username/dotfiles.git 012325a..6c12a63 master -> master

Slide 27

Slide 27 text

Changing a file $ vi .vimrc $ dfm status -s M .vimrc $ dfm commit -am 'updated vimrc' [master be47490] updated 1 files changed, 1 insertions(+), 0 deletions(-) $ dfm push origin master Counting objects: 4, done. Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 301 bytes, done. Total 3 (delta 1), reused 0 (delta 0) To [email protected]:username/dotfiles.git a0d469b..5a745c4 master -> master

Slide 28

Slide 28 text

Getting latest dotfiles $ dfm updates remote: Counting objects: 5, done. remote: Compressing objects: 100% (2/2), done. remote: Total 3 (delta 1), reused 3 (delta 1) Unpacking objects: 100% (3/3), done. From github.com:username/dotfiles 5a745c4..012325a master -> origin/master 012325a: updated vimrc $ dfm mi INFO: using merge to bring in changes Updating 5a745c4..012325a Fast-forward .vimrc | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) INFO: re-installing dotfiles INFO: Installing dotfiles...

Slide 29

Slide 29 text

special powers

Slide 30

Slide 30 text

Run any git commands $ dfm status -s M .vimrc $ pushd ~/.dotfiles ~/.dotfiles ~ $ git status -s M .vimrc $ popd ~

Slide 31

Slide 31 text

Backups $ cat .vimrc syntax on $ dfm install INFO: Installing dotfiles... INFO: Backing up .vimrc. INFO: Symlinking .vimrc (.dotfiles/.vimrc). $ cat .vimrc set nocompatible set bg=dark set ts=4 sw=4 set incsearch $ cat .backup/.vimrc syntax on

Slide 32

Slide 32 text

Skipping files $ ls -l .dotfiles/README.md -rw-rw-r-- .dotfiles/README.md $ cat .dotfiles/.dfminstall README.md skip $ dfm install INFO: Installing dotfiles... $ ls README.md ls: cannot access README.md: No such file or directory

Slide 33

Slide 33 text

Recursion $ ls -l .dotfiles/.ssh/ -rw-r--r-- config $ cat .dotfiles/.dfminstall .ssh $ dfm install INFO: Installing dotfiles... INFO: Symlinking config (../.dotfiles/.ssh/config). $ ls -ld .ssh/ drwx------ .ssh/ $ ls -l .ssh lrwxrwxrwx .ssh/config -> ../.dotfiles/.ssh/config -rw-r--r-- .ssh/known_hosts

Slide 34

Slide 34 text

looking forward

Slide 35

Slide 35 text

Low hanging fruit grow test suite more documentation 'dfm uninstall' 'dfm umi' clean up dangling symlinks

Slide 36

Slide 36 text

Ease of use starter repositories integrate bootstrap script ensure compatibility with zsh

Slide 37

Slide 37 text

Advanced script to help with managing multiple branches automatic update checker git hooks ???

Slide 38

Slide 38 text

more information

Slide 39

Slide 39 text

Source and documentation http://github.com/justone/dotfiles http://github.com/justone/dotfiles/wiki http://github.com/justone/dfm_present

Slide 40

Slide 40 text

Thanks http://git-scm.com/ http://www.perl.org/ https://github.com/schacon/showoff http://www.openclipart.org/

Slide 41

Slide 41 text

questions?