vcsh manage config files in $HOME via fake bare git repositories - - PowerPoint PPT Presentation

vcsh
SMART_READER_LITE
LIVE PREVIEW

vcsh manage config files in $HOME via fake bare git repositories - - PowerPoint PPT Presentation

Intro Technical details Using vcsh Outlook Outro vcsh manage config files in $HOME via fake bare git repositories Richard Hartmann, RichiH@ { freenode,OFTC,IRCnet } , richih.mailinglist@gmail.com 2012-02-04 Richard Hartmann, RichiH@ {


slide-1
SLIDE 1

Intro Technical details Using vcsh Outlook Outro

vcsh

manage config files in $HOME via fake bare git repositories Richard Hartmann, RichiH@{freenode,OFTC,IRCnet}, richih.mailinglist@gmail.com 2012-02-04

Richard Hartmann, RichiH@{freenode,OFTC,IRCnet}, richih.mailinglist@gmail.com vcsh

slide-2
SLIDE 2

Intro Technical details Using vcsh Outlook Outro

Outline

1

Intro

2

Technical details

3

Using vcsh

4

Outlook

5

Outro

Richard Hartmann, RichiH@{freenode,OFTC,IRCnet}, richih.mailinglist@gmail.com vcsh

slide-3
SLIDE 3

Intro Technical details Using vcsh Outlook Outro

Outline

1

Intro

2

Technical details

3

Using vcsh

4

Outlook

5

Outro

Richard Hartmann, RichiH@{freenode,OFTC,IRCnet}, richih.mailinglist@gmail.com vcsh

slide-4
SLIDE 4

Intro Technical details Using vcsh Outlook Outro

Who am I?

Project & Network Operations Manager at Globalways AG freenode & OFTC staff Passionate about FLOSS Author of vcsh

Richard Hartmann, RichiH@{freenode,OFTC,IRCnet}, richih.mailinglist@gmail.com vcsh

slide-5
SLIDE 5

Intro Technical details Using vcsh Outlook Outro

What is git?

Version control system Distributed

No need for central repository Allows you to commit while offline

Full history in every checkout Best version control system available (imo...)

Richard Hartmann, RichiH@{freenode,OFTC,IRCnet}, richih.mailinglist@gmail.com vcsh

slide-6
SLIDE 6

Intro Technical details Using vcsh Outlook Outro

Outline

1

Intro

2

Technical details

3

Using vcsh

4

Outlook

5

Outro

Richard Hartmann, RichiH@{freenode,OFTC,IRCnet}, richih.mailinglist@gmail.com vcsh

slide-7
SLIDE 7

Intro Technical details Using vcsh Outlook Outro

What is vcsh?

Implemented in POSIX shell; portable ”version control shell” or ”version control system $HOME” Based on git

git unable to maintain several working copies in one directory Sucks if you want to keep your configs in git

vcsh uses fake bare git repositories to work around this Think of it as an extension to git

Richard Hartmann, RichiH@{freenode,OFTC,IRCnet}, richih.mailinglist@gmail.com vcsh

slide-8
SLIDE 8

Intro Technical details Using vcsh Outlook Outro

fake bare.. what?

Normal git repo:

working copy in $GIT WORK TREE git data in $GIT WORK TREE/.git aka $GIT DIR

Bare git repo:

git data in $GIT DIR no $GIT WORK TREE

Fake bare git repo:

working copy in $GIT WORK TREE git data in $GIT DIR $GIT WORK TREE == $HOME $GIT DIR == $XDG CONFIG HOME/vcsh/repo.d/$repo.vcsh core.bare = false

Richard Hartmann, RichiH@{freenode,OFTC,IRCnet}, richih.mailinglist@gmail.com vcsh

slide-9
SLIDE 9

Intro Technical details Using vcsh Outlook Outro

Problems with fake bare git repos

Fake bare repos are messy to set up and use Reason why git disallows shared $GIT WORK TREE: complexity due to context-dependency Mistakes lead to confusion or data loss; imagine $GIT WORK TREE set and

git add git reset --hard HEAD~1 git checkout -- * git clean -f

Richard Hartmann, RichiH@{freenode,OFTC,IRCnet}, richih.mailinglist@gmail.com vcsh

slide-10
SLIDE 10

Intro Technical details Using vcsh Outlook Outro

Solution: vcsh

Wraps around git Hides complexity and does sanity checks Several git repos checked out into $HOME at once

One repo for zsh, vim, mplayer, etc Enables specific subsets of repos per host

Manages complete repo life-cycle

Richard Hartmann, RichiH@{freenode,OFTC,IRCnet}, richih.mailinglist@gmail.com vcsh

slide-11
SLIDE 11

Intro Technical details Using vcsh Outlook Outro

Outline

1

Intro

2

Technical details

3

Using vcsh

4

Outlook

5

Outro

Richard Hartmann, RichiH@{freenode,OFTC,IRCnet}, richih.mailinglist@gmail.com vcsh

slide-12
SLIDE 12

Intro Technical details Using vcsh Outlook Outro

Create new repo

# create new repo vcsh init vim # add files to it vcsh run vim git add .vim .vimrc # commit using shorthand form vcsh vim commit # push using longhand form vcsh run vim git push

Richard Hartmann, RichiH@{freenode,OFTC,IRCnet}, richih.mailinglist@gmail.com vcsh

slide-13
SLIDE 13

Intro Technical details Using vcsh Outlook Outro

Made-up life-cycle

# clone repo into new name zsh vcsh clone git://github.com/RichiH/zshrc.git zsh # optionally update legacy repos vcsh setup zsh # display all files managed by this repo vcsh run zsh git ls-files # rename repo just because vcsh rename zsh zshrc # delete repo vcsh delete zshrc

Richard Hartmann, RichiH@{freenode,OFTC,IRCnet}, richih.mailinglist@gmail.com vcsh

slide-14
SLIDE 14

Intro Technical details Using vcsh Outlook Outro

run vs enter

# do everything from outside vcsh run zsh git add .zshrc vcsh run zsh git commit vcsh run zsh git push # the same, but from within vcsh enter zsh git add .zshrc git commit git push exit

Richard Hartmann, RichiH@{freenode,OFTC,IRCnet}, richih.mailinglist@gmail.com vcsh

slide-15
SLIDE 15

Intro Technical details Using vcsh Outlook Outro

Playing nice with others

shells can display exported ENV in $PROMPT vcs info mr via plugin, mainline soon git-annex to manage non-configuration files Simple but powerful hook system

Richard Hartmann, RichiH@{freenode,OFTC,IRCnet}, richih.mailinglist@gmail.com vcsh

slide-16
SLIDE 16

Intro Technical details Using vcsh Outlook Outro

Outline

1

Intro

2

Technical details

3

Using vcsh

4

Outlook

5

Outro

Richard Hartmann, RichiH@{freenode,OFTC,IRCnet}, richih.mailinglist@gmail.com vcsh

slide-17
SLIDE 17

Intro Technical details Using vcsh Outlook Outro

Future work

More unit tests Get vcsh into more distributions Spread awareness to reach critical mass Maybe extend support to subversion, mercurial, etc

Richard Hartmann, RichiH@{freenode,OFTC,IRCnet}, richih.mailinglist@gmail.com vcsh

slide-18
SLIDE 18

Intro Technical details Using vcsh Outlook Outro

Outline

1

Intro

2

Technical details

3

Using vcsh

4

Outlook

5

Outro

Richard Hartmann, RichiH@{freenode,OFTC,IRCnet}, richih.mailinglist@gmail.com vcsh

slide-19
SLIDE 19

Intro Technical details Using vcsh Outlook Outro

Where to get it

git clone git://github.com/RichiH/vcsh.git Native packages for

Debian Ubuntu Arch Linux (AUR)

Small bug in README.md, use v0.20120203 or git

Richard Hartmann, RichiH@{freenode,OFTC,IRCnet}, richih.mailinglist@gmail.com vcsh

slide-20
SLIDE 20

Intro Technical details Using vcsh Outlook Outro

Thanks!

Thanks for listening! Questions? Follow me outside when my time-slot is over. See slide footer for further contact Information.

Richard Hartmann, RichiH@{freenode,OFTC,IRCnet}, richih.mailinglist@gmail.com vcsh