Never been to CodeSnippets before?

Snippets is a public source code repository. Easily build up your personal collection of code snippets, categorize them with tags / keywords, and share them with the world (or not, you can keep them private!)

Compile & install git on Mac OS X

Requires Xcode.

export PATH=/usr/local/bin:/usr/local/sbin:/usr/local/lib:/usr/local/include:/usr/bin:/bin:/usr/sbin:/sbin
export IFS=$' \t\n'


# see what you already have
which asciidoc gpg gettext git
find /usr/lib /usr/local/lib -iname "*expat*"
python -V   # should be Python 2.4 or newer


# rudix
# http://rudix.org

cd ~/Desktop
curl -L -O http://downloads.sourceforge.net/rudix/rudix-1.5.2-0.dmg
hdiutil mount ~/Desktop/rudix-1.5.2-0.dmg
ls -1 /Volumes/* | egrep -i rudix
open -a Installer /Volumes/rudix/rudix.pkg
hdiutil unmount /Volumes/rudix

which rudix
man rudix


# expat
# also available via http://rudix.org

cd ~/Desktop
curl -L -O http://downloads.sourceforge.net/expat/expat-2.0.1.tar.gz
tar -xvzf expat-2.0.1.tar.gz 
cd expat-2.0.1
./configure --prefix=/usr/local
make
make check
sudo make install

find /usr/local -iname "*expat*"


# Python 2.5.2

cd ~/Desktop
curl -L -O http://downloads.sourceforge.net/rudix/python-2.5.2-1.dmg
hdiutil mount ~/Desktop/python-2.5.2-1.dmg
sudo rudix -i /Volumes/python/python.pkg
hdiutil unmount /Volumes/python

which python
python -V     # Python 2.5.2


# python-docs

cd ~/Desktop
curl -L -O http://downloads.sourceforge.net/rudix/python-docs-2.5.2-1.dmg
hdiutil mount ~/Desktop/python-docs-2.5.2-1.dmg
sudo rudix -i /Volumes/python-docs/python-docs.pkg
hdiutil unmount /Volumes/python-docs

man /usr/local/share/man/man1/python.1
ls -1 /usr/local/share/doc/python/*
find /usr/local/share/doc/python -mindepth 1 -maxdepth 1
find /usr/local/share/doc/python/doc -mindepth 1 -maxdepth 1
find /usr/local/share/doc/python/mac -mindepth 1 -maxdepth 1


# asciidoc
# asciidoc 8.3.0 requires Python 2.4 or newer

cd ~/Desktop
curl -L -O http://www.methods.co.nz/asciidoc/asciidoc-8.3.0.tar.gz
tar -xvzf asciidoc-8.3.0.tar.gz
cd asciidoc-8.3.0
open -e ~/Desktop/asciidoc-8.3.0/INSTALL
sudo ./install.sh

which asciidoc
man asciidoc


# GPG

cd ~/Desktop
curl -L -O http://downloads.sourceforge.net/rudix/gnupg-1.4.9-2.dmg
hdiutil mount ~/Desktop/gnupg-1.4.9-2.dmg
sudo rudix -i /Volumes/gnupg/gnupg.pkg
hdiutil unmount /Volumes/gnupg

which gpg
gpg --version
man gpg



# GetText

cd ~/Desktop
curl -L -O http://downloads.sourceforge.net/rudix/gettext-0.17-1.dmg
hdiutil mount ~/Desktop/gettext-0.17-1.dmg
sudo rudix -i /Volumes/gettext/gettext.pkg
hdiutil unmount /Volumes/gettext

which gettext
gettext --version
man gettext
open /usr/local/share/locale




# git 
# http://rudix.org

cd ~/Desktop
curl -L -O http://downloads.sourceforge.net/rudix/git-1.5.6.2-1.dmg
hdiutil mount ~/Desktop/git-1.5.6.2-1.dmg
sudo rudix -i /Volumes/git/git.pkg
hdiutil unmount /Volumes/git

which git
git --version
man git

sudo rudix -r git.pkg



# git
# http://git.or.cz

cd ~/Desktop
curl -L -O http://kernel.org/pub/software/scm/git/git-1.6.0.4.tar.gz
tar -xzf git-1.6.0.4.tar.gz
cd git-1.6.0.4
./configure
make
sudo make install

which git
git --version


# git man pages

cd ~/Desktop
curl -L -O http://kernel.org/pub/software/scm/git/git-manpages-1.6.0.4.tar.gz
sudo tar -C /usr/local/share/man -xzf git-manpages-1.6.0.4.tar.gz


git --help

git help add
git help bisect
git help shell
git help git-svn
git help git-daemon

git help gittutorial
git help gitcore-tutorial
git help gitglossary


cd ~/Desktop
mkdir -p ~/Desktop/git-test
cd ~/Desktop/git-test
openport 9418   # cf. http://codesnippets.joyent.com/posts/show/1747
git clone git://git.kernel.org/pub/scm/git/git.git
closeport 9418
open ~/Desktop/git-test
find ~/Desktop/git-test/git -mindepth 1 -maxdepth 1 -ls


# To configure git see:
# - http://dysinger.net/2007/12/30/installing-git-on-mac-os-x-105-leopard/
# - http://arthurkoziel.com/2008/05/02/git-configuration/
# - http://www.bergek.com/wp-content/uploads/2008/09/git-install.sh
# - http://git.or.cz/gitwiki/GitTips


References:

- Git - Fast Version Control System
- Wikipedia: Git
- Rudix
- Install git on Mac OS X 10.4 (expat, asciidoc)
- Installing GIT on Mac OS X 10.5 Leopard (GPG, GetText)
- Compiling Git and git-svn on OSX Tiger (git-svn, Perl)
- Getting git-svn working on the Mac
- Git vs. Mac HFS+ filesystem (UFS & git)
- git-osx-installer
- Git Configuration (on Mac OS X)
- GitTips
- Git User's Manual
- Tag: git
- Git Quick Reference
- Git Guide
- Git Internals: Source code control and beyond
- PeepCode Git screencast
- git hosting with Leopard
- Hosting Git repositories, The Easy (and Secure) Way
- The Git Community Book
- Setting up Git on OSX
- Git and Binaries
- Git cheat sheet
- Setting up a new remote git repository
- Sharing git repositories via OS X's built-in web sharing
- GitHub Tips: Removing a Remote Branch
- Using git in the Finder
- GitX - a git GUI for Mac OS X

Handling control characters on the command line

# cf. http://en.wikipedia.org/wiki/Control_character and 
# http://ascii.cl/control-characters.htm

printf '\033'"\n" | cat -vet -
printf '\x0d'"\n" | cat -vet -

[ctrl-v][esc]
[ctrl-v][ctrl-m]

printf '[ctrl-v][ctrl-m]' | cat -vet -; echo


# cf. http://codesnippets.joyent.com/posts/show/1630
printf !:1 | sed -n -e 'l' 

# for an alternative to !:1 try [esc][ctrl][y]
printf !:1 | pbcopy    

# cf. man ascii
printf $(pbpaste) | od -A n -b
printf $(pbpaste) | od -A n -t xC
printf $(pbpaste) | od -A n -t dC

printf $(pbpaste) | od -A n -c
printf $(pbpaste) | od -A n -a

echo $'hel\rlo' 
echo $'hel\rlo' | sed s/[ctrl-v][ctrl-m]//
echo $'hel\rlo' | sed 's/[ctrl-v][ctrl-m]//'
echo $'hel\rlo' | sed "s/[ctrl-v][ctrl-m]//"
echo $'hel\rlo' | sed s/$'[ctrl-v][ctrl-m]'//


man infocmp
infocmp --help

infocmp -1 | grep '\^'
infocmp -1 | grep '\<k'
infocmp -L1 | grep '\^'
infocmp -I1 | grep '\^'
infocmp -C1 | grep '\^'
infocmp -L | grep cursor


tput cup 0 0
clear
tput cup 0 0 | cat -vet -; echo
tput cup 0 0 | sed -n -e 'l'
tput cup 0 0 | od -A n -c | sed '$,$d'
tput cup 0 0 | od -A n -a | sed '$,$d'
tput cup 0 0 | od -A n -b | sed '$,$d'
tput cup 0 0 | od -A n -t xC | sed '$,$d'

tput sgr0 | cat -vet -; echo
tput cuu | cat -vet -; echo
tput up | cat -vet -; echo
tput dl1 | cat -vet -; echo

tput kbs | wc -c
tput kbs | ruby -n -e 'p $_.to_s'


printf "%s\000\n" "str" | cat -vet -
printf "%s\000\n" "str" | od -A n -b | sed '$,$d'
printf "%s\000\n" "str" | sed -n -e 'l'
printf "%s\000\n" "str" | ruby -n -e 'p $_.to_s'