michaelfox + git 121
Kiln - Mercurial Version Control and Code Review Software from Fog Creek Software
15 days ago by michaelfox
Your Power Tools for Version Control and Code Review
Simplify your development workflow
Ship higher quality code
Understand your code's history
Integrate with FogBugz and other tools
No limits on repositories
bugtracking
codereview
hosting
mercurial
git
code
sourcecontrol
scm
bugs
tracking
tools
saas
Simplify your development workflow
Ship higher quality code
Understand your code's history
Integrate with FogBugz and other tools
No limits on repositories
15 days ago by michaelfox
Github Recommendation Service
february 2012 by michaelfox
see suggested repos (based on watcher relationships)
git
code
inspiration
discovery
github
browser
february 2012 by michaelfox
tbaggery - Effortless Ctags with Git
january 2012 by michaelfox
git config --global init.templatedir '~/.git_template'
mkdir -p ~/.git_template/hooks
#!/bin/sh
rm -f .git/tags
ctags --tag-relative -Rf.git/tags --exclude=.git --languages=-javascript,sql
ctags
git
githook
vim
fugitive.vim
git-hooks
mkdir -p ~/.git_template/hooks
#!/bin/sh
rm -f .git/tags
ctags --tag-relative -Rf.git/tags --exclude=.git --languages=-javascript,sql
january 2012 by michaelfox
bobthecow's gist: 700545 — Gist
october 2011 by michaelfox
ls_dead_branches.sh
#!/bin/bash
cd "./$(git rev-parse --show-cdup)"
for branch in $(git branch | tr -d " |*" | grep -v "(develop|production)"); do
[[ -z $(git diff develop...$branch) ]] && echo $branch
done
bash
shell
git
branch
#!/bin/bash
cd "./$(git rev-parse --show-cdup)"
for branch in $(git branch | tr -d " |*" | grep -v "(develop|production)"); do
[[ -z $(git diff develop...$branch) ]] && echo $branch
done
october 2011 by michaelfox
Git aliases — Gist
october 2011 by michaelfox
[alias]
edit-unmerged = "!f() { git ls-files --unmerged | cut -f2 | sort -u ; }; $EDITOR `f`"
add-unmerged = "!f() { git ls-files --unmerged | cut -f2 | sort -u ; }; git add `f`"
lc = log ORIG_HEAD.. --stat --no-merges
smash = merge --no-commit --log
eat = branch -M
prune-all = !git remote | xargs -n 1 git remote prune
whois = "!sh -c 'git log -i --pretty="format:%an <%ae>" --author="$1" | sort -u' -"
whatis = show -s --pretty='tformat:%h (%s, %ad)' --date=short
this = !git init && ( [[ -n $(ls) ]] || touch .gitignore ) && git add . && git commit -m "initial commit"
sp = ![[ -z $(git status --porcelain -uno) ]] && git pull || git stash && git pull && git stash pop
spp = ![[ -z $(git status --porcelain -uno) ]] && git pull || git stash && git pull && git push && git stash pop
pp = !git pull && git push
ppu = !git pp && git submodule sync && git submodule update --init
ls = "!git status -suno"
ls-modified = "!git status --porcelain -uno | awk 'match($1, /M/) {print $2}'"
ls-added = "!git status --porcelain -uno | awk 'match($1, /A/) {print $2}'"
ls-deleted = "!git status --porcelain -uno | awk 'match($1, /D/) {print $2}'"
ls-renamed = "!git status --porcelain -uno | awk 'match($1, /R/) {print $2}'"
ls-copied = "!git status --porcelain -uno | awk 'match($1, /C/) {print $2}'"
ls-updated = "!git status --porcelain -uno | awk 'match($1, /U/) {print $2}'"
ls-staged = "!git status --porcelain -uno | grep -P '^[MA]' | awk '{ print $2 }'"
ls-untracked = "!git status --porcelain -uall | awk '$1 == "??" {print $2}'"
sup = !git submodule sync && git submodule update --init
# install t first: http://github.com/sjl/t
todo = !python ~/lib/t/t.py --task-dir "$(git rev-parse --show-toplevel)" --list TODO
bug = !python ~/lib/t/t.py --task-dir "$(git rev-parse --show-toplevel)" --list BUGS
alias = "!sh -c '[ $# = 2 ] && git config --global alias."$1" "$2" && exit 0 || [ $# = 1 ] && [ $1 = "--list" ] && git config --list | grep "alias\." | sed "s/^alias\.\([^=]*\)=\(.*\).*/\1@@@@=>@@@@\2/" | sort | column -ts "@@@@" && exit 0 || echo "usage: git alias <new alias> <original command>\n git alias --list" >&2 && exit 1' -"
ignore = "!sh -c '([ $# = 2 ] && ([ "$1" = "--local" ] && echo "$2" >> "./$(git rev-parse --show-cdup)/.git/info/exclude" || ([ "$2" = "--local" ] && echo "$1" >> "./$(git rev-parse --show-cdup)/.git/info/exclude"))) || ([ $# = 1 ] && (([ "$1" == "--list" ] && git ls-files -i --exclude-standard) || (([ ! -e .gitignore ] && touch .gitignore || echo "$(cat .gitignore)" > .gitignore) && echo "$1" >> .gitignore))) || echo "usage: git ignore <file>\n git ignore --local <file>\n git ignore --list" >&2 && exit 1' -"
lol = log --graph --decorate --pretty=oneline --abbrev-commit
lola = log --graph --decorate --pretty=oneline --abbrev-commit --all
cs = !git ls-staged | grep ".php" | xargs phpcs
peeps = !git log --pretty=format:%aN | sort | uniq -c | sort -rn
graph = log --pretty=format:"%h %ad | %s%d [%an]" --graph --date=short
git
dotfiles
config
gist
github-user:bobthecow
edit-unmerged = "!f() { git ls-files --unmerged | cut -f2 | sort -u ; }; $EDITOR `f`"
add-unmerged = "!f() { git ls-files --unmerged | cut -f2 | sort -u ; }; git add `f`"
lc = log ORIG_HEAD.. --stat --no-merges
smash = merge --no-commit --log
eat = branch -M
prune-all = !git remote | xargs -n 1 git remote prune
whois = "!sh -c 'git log -i --pretty="format:%an <%ae>" --author="$1" | sort -u' -"
whatis = show -s --pretty='tformat:%h (%s, %ad)' --date=short
this = !git init && ( [[ -n $(ls) ]] || touch .gitignore ) && git add . && git commit -m "initial commit"
sp = ![[ -z $(git status --porcelain -uno) ]] && git pull || git stash && git pull && git stash pop
spp = ![[ -z $(git status --porcelain -uno) ]] && git pull || git stash && git pull && git push && git stash pop
pp = !git pull && git push
ppu = !git pp && git submodule sync && git submodule update --init
ls = "!git status -suno"
ls-modified = "!git status --porcelain -uno | awk 'match($1, /M/) {print $2}'"
ls-added = "!git status --porcelain -uno | awk 'match($1, /A/) {print $2}'"
ls-deleted = "!git status --porcelain -uno | awk 'match($1, /D/) {print $2}'"
ls-renamed = "!git status --porcelain -uno | awk 'match($1, /R/) {print $2}'"
ls-copied = "!git status --porcelain -uno | awk 'match($1, /C/) {print $2}'"
ls-updated = "!git status --porcelain -uno | awk 'match($1, /U/) {print $2}'"
ls-staged = "!git status --porcelain -uno | grep -P '^[MA]' | awk '{ print $2 }'"
ls-untracked = "!git status --porcelain -uall | awk '$1 == "??" {print $2}'"
sup = !git submodule sync && git submodule update --init
# install t first: http://github.com/sjl/t
todo = !python ~/lib/t/t.py --task-dir "$(git rev-parse --show-toplevel)" --list TODO
bug = !python ~/lib/t/t.py --task-dir "$(git rev-parse --show-toplevel)" --list BUGS
alias = "!sh -c '[ $# = 2 ] && git config --global alias."$1" "$2" && exit 0 || [ $# = 1 ] && [ $1 = "--list" ] && git config --list | grep "alias\." | sed "s/^alias\.\([^=]*\)=\(.*\).*/\1@@@@=>@@@@\2/" | sort | column -ts "@@@@" && exit 0 || echo "usage: git alias <new alias> <original command>\n git alias --list" >&2 && exit 1' -"
ignore = "!sh -c '([ $# = 2 ] && ([ "$1" = "--local" ] && echo "$2" >> "./$(git rev-parse --show-cdup)/.git/info/exclude" || ([ "$2" = "--local" ] && echo "$1" >> "./$(git rev-parse --show-cdup)/.git/info/exclude"))) || ([ $# = 1 ] && (([ "$1" == "--list" ] && git ls-files -i --exclude-standard) || (([ ! -e .gitignore ] && touch .gitignore || echo "$(cat .gitignore)" > .gitignore) && echo "$1" >> .gitignore))) || echo "usage: git ignore <file>\n git ignore --local <file>\n git ignore --list" >&2 && exit 1' -"
lol = log --graph --decorate --pretty=oneline --abbrev-commit
lola = log --graph --decorate --pretty=oneline --abbrev-commit --all
cs = !git ls-staged | grep ".php" | xargs phpcs
peeps = !git log --pretty=format:%aN | sort | uniq -c | sort -rn
graph = log --pretty=format:"%h %ad | %s%d [%an]" --graph --date=short
october 2011 by michaelfox
git-notes: Extensive collection of notes on Git.
january 2011 by michaelfox
This repo contains all my notes about git. I started writing them for my own understanding, almost like cheat sheets, but they may be useful for others also.
Git is a Distributed Version Control System. Most VCSs you know (like CVS, Subversion, Clearcase, Perforce, and VSS) are centralised. A Distributed VCS allows you to make frequent, local, commits to checkpoint your work while you're still perfecting the code -- you cannot do this with a centralised VCS.
Basics
If you...
have no idea what git is and wonder what the fuss is all about, and why it's become so popular, see this article, which I wrote for LFY (July 2008 issue)
want a basic intro to the most important concepts behind git, see this presentation
know something about version control, and are trying to understand why git is so powerful, spend some time on this presentation.
need a quick refresh of the terminology once in a while, read this.
if you're itching to get started, but have become overwhelmed by having to understand git itself and how it fits with ssh or http etc., read this -- I've been told it is quite helpful :)
Note that the presentations are meant to be interactive, with someone talking through the slides, but have enough detail that you can read them yourself if you like.
Beyond the basics
If you know a little about git and/or have attended one of my talks, you can follow the links below.
(c) Copyright Sitaram Chamarty, sitaramc@gmail.com, licensed under the Creative Commons Attribution Sharealike license.
subdirectories:
0-installing
1-basic-usage
2-command-line-usage
concepts
other-stuff
the-list-and-irc
tips
documentation
git
presentation
notes
reference
collection
Git is a Distributed Version Control System. Most VCSs you know (like CVS, Subversion, Clearcase, Perforce, and VSS) are centralised. A Distributed VCS allows you to make frequent, local, commits to checkpoint your work while you're still perfecting the code -- you cannot do this with a centralised VCS.
Basics
If you...
have no idea what git is and wonder what the fuss is all about, and why it's become so popular, see this article, which I wrote for LFY (July 2008 issue)
want a basic intro to the most important concepts behind git, see this presentation
know something about version control, and are trying to understand why git is so powerful, spend some time on this presentation.
need a quick refresh of the terminology once in a while, read this.
if you're itching to get started, but have become overwhelmed by having to understand git itself and how it fits with ssh or http etc., read this -- I've been told it is quite helpful :)
Note that the presentations are meant to be interactive, with someone talking through the slides, but have enough detail that you can read them yourself if you like.
Beyond the basics
If you know a little about git and/or have attended one of my talks, you can follow the links below.
(c) Copyright Sitaram Chamarty, sitaramc@gmail.com, licensed under the Creative Commons Attribution Sharealike license.
subdirectories:
0-installing
1-basic-usage
2-command-line-usage
concepts
other-stuff
the-list-and-irc
tips
january 2011 by michaelfox
git.grml.org Git
december 2010 by michaelfox
aamath.git - ASCII art mathematics renderer
advchk.git - monitor the security of instal
afflib.git - utils for the Advanced Forensi
anytun.git - secure anycast tunneling protocol
base64.git - encode and decode base64 files
cdrtools.git - command line CD writing tool
cmospwd.git - a cmos/bios password recovery
ctris.git - colorized, small and flexible
dd-rhelp.git - dd_rescue hard disk rescue
ddrescue.git - copies data from one file
dupmerge.git - reclaim disk space by linking
elizatalk.git - simple autoresponder
espeakup.git - use espeak software synthesize
fai-stable.git - FAI stable branch (git-svn
fvwm-crystal-minimal.git - Pretty Desktop Environment
gatling.git - a high performance web server
gddrescue.git - the GNU data recovery tool
glipper-nognome.git - clipboard manager
grml-api.git - API for the grml live system
grml-autoconfig.git - main bootup process of a grml
grml-btnet.git - server and client to quickly
grml-buildd.git - buildd related stuff
grml-core.git - core files for the grml live
grml-crypt.git - wrapper arround cryptsetup
grml-debian-keyring.git - GnuPG archive key of the grml
grml-debootstrap.git - wrapper around debootstrap
grml-debugtools.git - various debug related tools
grml-desktop.git - configuration files for grml
grml-docs.git - documentation for grml (grml
grml-etc-core.git - core configuration files of
grml-etc.git - ecetera files for the grml
grml-files.git - some misc files for grml
grml-files64.git - some misc files for grml64
grml-firefox.git - configuration for firefox
grml-gen-zshrefcard.git - generate zsh reference card
grml-git-doc.git - Documentation of git at grml
grml-git-tools.git - Useful addons for work with git
grml-homepage.git - website of grml (WIP)
grml-hwinfo.git - collect hardware information
grml-infrastructure.git - documentation of grml-infrastr
grml-kernel.git - patches, configuration and
grml-laptop.git - optimize system for specific
grml-live.git - build system for creating
grml-lsb.git - lsb function definitions for
grml-mercurial-utils.git - some scripts for easier work
grml-mirrors.git - policies/guidelines/howto
grml-network.git - network related helper scripts
grml-paste.git - command line interface for
grml-policy.git - the grml policy documentation
grml-policyrcd.git - wrapper for and around invoke
grml-pylib.git - python wrappers arround differ
grml-quickconfig.git - fast access to some basic
grml-rebuildfstab.git - fstab-rebuilder for grml
grml-rescueboot.git - Bootloader integration of
grml-roadmap.git - Roadmap for grml (tracking
grml-runit.git - Grmls idea of runit service
grml-saveconfig.git - utilities and documentation
grml-scanpartitions.git - fstab-helper for grml
grml-scripts.git - some small scripts which shoul
grml-sectools.git - collection of small in-/securi
grml-shlib.git - generic shell library
grml-shred-disk.git - utility to securely shred
grml-small.git - virtual package for main grml
grml-templates.git - templates for LaTeX, c, cpp
grml-terminalserver-data.git - data package for grml-terminal
grml-terminalserver.git - terminalserver for grml
grml-tips.git - search for tips and hints
grml-twitter-tips.git - grml related tips for http
grml-udev-config.git - custom udev configurations
grml-unittests.git - unittests for the Grml live
grml-usleep.git - sleeps for a number of microse
grml-vpn.git - wrapper around setkey / IPsec
grml-x.git - X configuration tool for grml
grml.git - virtual package for main grml
grml2hd-utils.git - utilities for a grml system
grml2hd.git - make a harddisk installation
grml2usb.git - install grml-system to usb
grml64.git - virtual package for main grml6
guymager.git - Forensic imaging tool based
heirloom-sh.git - Heirloom Bourne Shell - derive
hg-doc.git - documentation of hg
hg-to-git.git - Migration utils for migrating
histring.git - highlight strings using ANSI
i855-crt.git - enable crt out on i855GM based
incron.git - inotify cron system
initramfs-tools.git - tools for generating an initra
ipw-firmware.git - Intel PRO/Wireless 2100 and
iscsitarget.git - iSCSI Enterprise Target
iwatch.git - realtime filesystem monitoring
kantan.git - simple test suite for autotest
latextug.git - German documentation on LaTeX
lcdtest.git - a utility to display LCD monit
libgebi-dev.git - a C++ library of generic desig
libguytools.git - libguytools is a small program
linux-kernel-headers-grml.git - virtual package to replace
live-boot-grml.git - grml's version of live-boot
live-initramfs-grml.git - grml's version of live-initramfs
md5deep.git - compute MD5, SHA-1, or SHA
minised.git - a smaller, cheaper, faster
nat-traverse.git - establish connections between
nntpview.git - small and fast nntp thread
nozomi-source.git - source for GlobeTrotter HSDPA
op.git - sudo like controlled privilege
pip.git - http://membled.com/work/apps
prism54-firmware.git - firmware images for prism54
python-axon.git - Asynchronous Isolated Generato
python-axon.mq.git - Asynchronous Isolated Generato
rainbowcrack.git - time-memory trade-off password
rephrase.git - A specialized passphrase recov
sbd.git - One-time cipher based back
shmux.git - execute the same command on
sitar.git - System InformaTion At Runtime
smap.git - nmap like SIP scanner
squashfs-lzma-tools.git - tool to create and append
squashfs-lzma.git - squashfs-tools with support
squashfs.git - tool to create and append
stressapptest.git - stress test application for
thc-ipv6.git - Tools to play with IPv6
tuitest.git - run automated tests of text
uanytun.git - tiny implementation of the
udev.git - udev package for grml
unsorted-patches.git - patches without an own package
w3bfukk0r.git - Scan webservers for hidden
xmount.git - tool to crossmount between
zfs-fuse.git - ZFS on FUSE/Linux
zsh-lovers.git tips, tricks and examples
zsh
shell
bash
etc
core
tools
scripts
docs
resources
repository
git
reference
advchk.git - monitor the security of instal
afflib.git - utils for the Advanced Forensi
anytun.git - secure anycast tunneling protocol
base64.git - encode and decode base64 files
cdrtools.git - command line CD writing tool
cmospwd.git - a cmos/bios password recovery
ctris.git - colorized, small and flexible
dd-rhelp.git - dd_rescue hard disk rescue
ddrescue.git - copies data from one file
dupmerge.git - reclaim disk space by linking
elizatalk.git - simple autoresponder
espeakup.git - use espeak software synthesize
fai-stable.git - FAI stable branch (git-svn
fvwm-crystal-minimal.git - Pretty Desktop Environment
gatling.git - a high performance web server
gddrescue.git - the GNU data recovery tool
glipper-nognome.git - clipboard manager
grml-api.git - API for the grml live system
grml-autoconfig.git - main bootup process of a grml
grml-btnet.git - server and client to quickly
grml-buildd.git - buildd related stuff
grml-core.git - core files for the grml live
grml-crypt.git - wrapper arround cryptsetup
grml-debian-keyring.git - GnuPG archive key of the grml
grml-debootstrap.git - wrapper around debootstrap
grml-debugtools.git - various debug related tools
grml-desktop.git - configuration files for grml
grml-docs.git - documentation for grml (grml
grml-etc-core.git - core configuration files of
grml-etc.git - ecetera files for the grml
grml-files.git - some misc files for grml
grml-files64.git - some misc files for grml64
grml-firefox.git - configuration for firefox
grml-gen-zshrefcard.git - generate zsh reference card
grml-git-doc.git - Documentation of git at grml
grml-git-tools.git - Useful addons for work with git
grml-homepage.git - website of grml (WIP)
grml-hwinfo.git - collect hardware information
grml-infrastructure.git - documentation of grml-infrastr
grml-kernel.git - patches, configuration and
grml-laptop.git - optimize system for specific
grml-live.git - build system for creating
grml-lsb.git - lsb function definitions for
grml-mercurial-utils.git - some scripts for easier work
grml-mirrors.git - policies/guidelines/howto
grml-network.git - network related helper scripts
grml-paste.git - command line interface for
grml-policy.git - the grml policy documentation
grml-policyrcd.git - wrapper for and around invoke
grml-pylib.git - python wrappers arround differ
grml-quickconfig.git - fast access to some basic
grml-rebuildfstab.git - fstab-rebuilder for grml
grml-rescueboot.git - Bootloader integration of
grml-roadmap.git - Roadmap for grml (tracking
grml-runit.git - Grmls idea of runit service
grml-saveconfig.git - utilities and documentation
grml-scanpartitions.git - fstab-helper for grml
grml-scripts.git - some small scripts which shoul
grml-sectools.git - collection of small in-/securi
grml-shlib.git - generic shell library
grml-shred-disk.git - utility to securely shred
grml-small.git - virtual package for main grml
grml-templates.git - templates for LaTeX, c, cpp
grml-terminalserver-data.git - data package for grml-terminal
grml-terminalserver.git - terminalserver for grml
grml-tips.git - search for tips and hints
grml-twitter-tips.git - grml related tips for http
grml-udev-config.git - custom udev configurations
grml-unittests.git - unittests for the Grml live
grml-usleep.git - sleeps for a number of microse
grml-vpn.git - wrapper around setkey / IPsec
grml-x.git - X configuration tool for grml
grml.git - virtual package for main grml
grml2hd-utils.git - utilities for a grml system
grml2hd.git - make a harddisk installation
grml2usb.git - install grml-system to usb
grml64.git - virtual package for main grml6
guymager.git - Forensic imaging tool based
heirloom-sh.git - Heirloom Bourne Shell - derive
hg-doc.git - documentation of hg
hg-to-git.git - Migration utils for migrating
histring.git - highlight strings using ANSI
i855-crt.git - enable crt out on i855GM based
incron.git - inotify cron system
initramfs-tools.git - tools for generating an initra
ipw-firmware.git - Intel PRO/Wireless 2100 and
iscsitarget.git - iSCSI Enterprise Target
iwatch.git - realtime filesystem monitoring
kantan.git - simple test suite for autotest
latextug.git - German documentation on LaTeX
lcdtest.git - a utility to display LCD monit
libgebi-dev.git - a C++ library of generic desig
libguytools.git - libguytools is a small program
linux-kernel-headers-grml.git - virtual package to replace
live-boot-grml.git - grml's version of live-boot
live-initramfs-grml.git - grml's version of live-initramfs
md5deep.git - compute MD5, SHA-1, or SHA
minised.git - a smaller, cheaper, faster
nat-traverse.git - establish connections between
nntpview.git - small and fast nntp thread
nozomi-source.git - source for GlobeTrotter HSDPA
op.git - sudo like controlled privilege
pip.git - http://membled.com/work/apps
prism54-firmware.git - firmware images for prism54
python-axon.git - Asynchronous Isolated Generato
python-axon.mq.git - Asynchronous Isolated Generato
rainbowcrack.git - time-memory trade-off password
rephrase.git - A specialized passphrase recov
sbd.git - One-time cipher based back
shmux.git - execute the same command on
sitar.git - System InformaTion At Runtime
smap.git - nmap like SIP scanner
squashfs-lzma-tools.git - tool to create and append
squashfs-lzma.git - squashfs-tools with support
squashfs.git - tool to create and append
stressapptest.git - stress test application for
thc-ipv6.git - Tools to play with IPv6
tuitest.git - run automated tests of text
uanytun.git - tiny implementation of the
udev.git - udev package for grml
unsorted-patches.git - patches without an own package
w3bfukk0r.git - Scan webservers for hidden
xmount.git - tool to crossmount between
zfs-fuse.git - ZFS on FUSE/Linux
zsh-lovers.git tips, tricks and examples
december 2010 by michaelfox
Git Reference
october 2010 by michaelfox
This is the Git reference site. This is meant to be a quick reference for learning and remembering the most important and commonly used Git commands. The commands are organized into sections of the type of operation you may be trying to do, and will preset the common options and commands needed to accomplish these common tasks.
Each section will link to the next section, so it can be used as a tutorial. Every page will also link to more in-depth Git documentation such as the offical manual pages and relevant sections in the Pro Git book, so you can learn more about any of the commands. First, we'll start with thinking about source code management like Git does.
development
documentation
git
programming
reference
Each section will link to the next section, so it can be used as a tutorial. Every page will also link to more in-depth Git documentation such as the offical manual pages and relevant sections in the Pro Git book, so you can learn more about any of the commands. First, we'll start with thinking about source code management like Git does.
october 2010 by michaelfox
ericbarnes's codeignitor-migrations at master - GitHub
september 2010 by michaelfox
An open source utility for Codeigniter inspired by Ruby on Rails. The one thing Ruby on Rails has that Codeigniter does not have built in is database migrations. That function to keep track of database chages (versions) and migrate your database to what ever version you need. Migrate up or migrate down. With this library you can now do this. This library is not complete, please read http://codeigniter.com/wiki/Migrations for future needs and issues. This "fork" of Mat'as orginal work just tweets something to work better in our work. Both Libraries are powerful and work in nearly the same way. Maybe someday we can create a joint project with Mat'as or even better get this into that core of Codeigniter.
codeigniter
database
migrations
versioncontrol
git
updates
mysql
september 2010 by michaelfox
37signals's fast_remote_cache at master - GitHub
september 2010 by michaelfox
A faster version of Capistrano's remote_cache deployment strategy
capistrano
deployment
github
git
september 2010 by michaelfox
GIT Howto Index
september 2010 by michaelfox
Here is a collection of mailing list postings made by various people describing how they use git in their workflow.
*
maintain-git by Junio C Hamano <gitster@pobox.com>
Imagine that git development is racing along as usual, when our friendly neighborhood maintainer is struck down by a wayward bus. Out of the hordes of suckers (loyal developers), you have been tricked (chosen) to step up as the new maintainer. This howto will show you "how to" do it.
*
rebase-from-internal-branch by Junio C Hamano <gitster@pobox.com>
In this article, JC talks about how he rebases the public "pu" branch using the core GIT tools when he updates the "master" branch, and how "rebase" works. Also discussed is how this applies to individual developers who sends patches upstream.
*
rebuild-from-update-hook by Junio C Hamano <gitster@pobox.com>
In this how-to article, JC talks about how he uses the post-update hook to automate git documentation page shown at http://www.kernel.org/pub/software/scm/git/docs/.
*
recover-corrupted-blob-object by Linus Torvalds <torvalds@linux-foundation.org>
Some tricks to reconstruct blob objects in order to fix a corrupted repository.
*
revert-a-faulty-merge by Linus Torvalds <torvalds@linux-foundation.org>, Junio C Hamano <gitster@pobox.com>
Sometimes a branch that was already merged to the mainline is later found to be faulty. Linus and Junio give guidance on recovering from such a premature merge and continuing development after the offending branch is fixed.
*
revert-branch-rebase by Junio C Hamano <gitster@pobox.com>
In this article, JC gives a small real-life example of using git revert command, and using a temporary branch and tag for safety and easier sanity checking.
*
separating-topic-branches by Junio C Hamano <gitster@pobox.com>
In this article, JC describes how to separate topic branches.
*
setup-git-server-over-http by Rutger Nijlunsing <rutger@nospam.com>
*
update-hook-example by Junio C Hamano <gitster@pobox.com> and Carl Baldwin <cnb@fc.hp.com>
An example hooks/update script is presented to implement repository maintenance policies, such as who can push into which branch and who can make a tag.
*
use-git-daemon
*
using-merge-subtree by Sean <seanlkml@sympatico.ca>
In this article, Sean demonstrates how one can use the subtree merge strategy.
development
git
howto
tools
workflow
collection
reference
tutorial
tips
docs
documentation
resourc
*
maintain-git by Junio C Hamano <gitster@pobox.com>
Imagine that git development is racing along as usual, when our friendly neighborhood maintainer is struck down by a wayward bus. Out of the hordes of suckers (loyal developers), you have been tricked (chosen) to step up as the new maintainer. This howto will show you "how to" do it.
*
rebase-from-internal-branch by Junio C Hamano <gitster@pobox.com>
In this article, JC talks about how he rebases the public "pu" branch using the core GIT tools when he updates the "master" branch, and how "rebase" works. Also discussed is how this applies to individual developers who sends patches upstream.
*
rebuild-from-update-hook by Junio C Hamano <gitster@pobox.com>
In this how-to article, JC talks about how he uses the post-update hook to automate git documentation page shown at http://www.kernel.org/pub/software/scm/git/docs/.
*
recover-corrupted-blob-object by Linus Torvalds <torvalds@linux-foundation.org>
Some tricks to reconstruct blob objects in order to fix a corrupted repository.
*
revert-a-faulty-merge by Linus Torvalds <torvalds@linux-foundation.org>, Junio C Hamano <gitster@pobox.com>
Sometimes a branch that was already merged to the mainline is later found to be faulty. Linus and Junio give guidance on recovering from such a premature merge and continuing development after the offending branch is fixed.
*
revert-branch-rebase by Junio C Hamano <gitster@pobox.com>
In this article, JC gives a small real-life example of using git revert command, and using a temporary branch and tag for safety and easier sanity checking.
*
separating-topic-branches by Junio C Hamano <gitster@pobox.com>
In this article, JC describes how to separate topic branches.
*
setup-git-server-over-http by Rutger Nijlunsing <rutger@nospam.com>
*
update-hook-example by Junio C Hamano <gitster@pobox.com> and Carl Baldwin <cnb@fc.hp.com>
An example hooks/update script is presented to implement repository maintenance policies, such as who can push into which branch and who can make a tag.
*
use-git-daemon
*
using-merge-subtree by Sean <seanlkml@sympatico.ca>
In this article, Sean demonstrates how one can use the subtree merge strategy.
september 2010 by michaelfox
Git smart: How we're using Git to track our source code - (37signals)
september 2010 by michaelfox
What is Git?
Git is a directory content tracker (i.e. it lets you keep track of the contacts of directories as they change over time). It was developed originally by Linus Torvalds (creator of Linux) in 2005.
What do we use it for?
Until a couple of weeks ago, we were using Subversion for keeping track of our source code. We’re now about a third of the way into converting everything to git (a surprisingly straightforward process, thanks to the git-svn utility).
So git is our source code manager of preference these days. Whenever someone makes a change to one of our applications or dependencies, they check the change into the central repository via git, and the other developers can then merge those changes into their own repositories. Git makes much of this insanely easy, compared to Subversion.
Why do we like it?
Branching and merging are the features we originally fell in love with. Whenever we start development on a new feature, we create a “branch” of the code. Work done in this branch will not affect the “main” branch (called “trunk” in subversion, and “master” in git), so it is a good way to make significant changes without affecting what our users actually see.
Branching and merging in Subversion are painful. If you’ve never used it, you don’t know what I mean. If you have, you do. Branching and merging in git, though, are wonderfully, blissfully straightforward. For those two reasons alone git is worth the switch for us, though there are lots of other, more advanced, features we like about git, too (git-stash, git-bisect, etc.)
How can people learn more?
The learning curve is pretty hefty, especially if you start out thinking of it like “subversion-but-with-some-differences”. The best way to learn git is to forget everything you know about more traditional SCM’s and read through the various tutorials online. We’ve got a Backpack page where we’ve been accumulating various Git resources.
git
versioncontrol
development
svn
code
resources
Git is a directory content tracker (i.e. it lets you keep track of the contacts of directories as they change over time). It was developed originally by Linus Torvalds (creator of Linux) in 2005.
What do we use it for?
Until a couple of weeks ago, we were using Subversion for keeping track of our source code. We’re now about a third of the way into converting everything to git (a surprisingly straightforward process, thanks to the git-svn utility).
So git is our source code manager of preference these days. Whenever someone makes a change to one of our applications or dependencies, they check the change into the central repository via git, and the other developers can then merge those changes into their own repositories. Git makes much of this insanely easy, compared to Subversion.
Why do we like it?
Branching and merging are the features we originally fell in love with. Whenever we start development on a new feature, we create a “branch” of the code. Work done in this branch will not affect the “main” branch (called “trunk” in subversion, and “master” in git), so it is a good way to make significant changes without affecting what our users actually see.
Branching and merging in Subversion are painful. If you’ve never used it, you don’t know what I mean. If you have, you do. Branching and merging in git, though, are wonderfully, blissfully straightforward. For those two reasons alone git is worth the switch for us, though there are lots of other, more advanced, features we like about git, too (git-stash, git-bisect, etc.)
How can people learn more?
The learning curve is pretty hefty, especially if you start out thinking of it like “subversion-but-with-some-differences”. The best way to learn git is to forget everything you know about more traditional SCM’s and read through the various tutorials online. We’ve got a Backpack page where we’ve been accumulating various Git resources.
september 2010 by michaelfox
ReekenX's Git-PHPcheck at master - GitHub
september 2010 by michaelfox
Tool to check your PHP files from parse errors before commit.
git
php
hooks
githooks
syntax
validation
programming
development
september 2010 by michaelfox
• How do you include external libraries like symfony components in your library repository? | test.ical.ly
september 2010 by michaelfox
Yesterday I had an idea for stunamis ImageTransform library. A simple yet powerful library to perform all kinds of image manipulation.
The idea was to make use of another library; a symfony component in fact: the EventDispatcher.
The immediate question that still puzzles me is: Where to put it?
When you’re developing a website or another application then integrating a library is easy. For example in symfony you would place it somewhere below /lib/vendor/ and you’re done with it.
As you are the end-user (developer) you have full control over everything.
However if you develop a library or a plugin or any other software component that other developers should use in their projects then simply including your dependencies won’t cut the mustard.
git
svn
dependencies
php
development
setup
structure
project
library
organization
external
submodules
The idea was to make use of another library; a symfony component in fact: the EventDispatcher.
The immediate question that still puzzles me is: Where to put it?
When you’re developing a website or another application then integrating a library is easy. For example in symfony you would place it somewhere below /lib/vendor/ and you’re done with it.
As you are the end-user (developer) you have full control over everything.
However if you develop a library or a plugin or any other software component that other developers should use in their projects then simply including your dependencies won’t cut the mustard.
september 2010 by michaelfox
Programmer Productivity: Measuring Results » Debuggable Ltd
september 2010 by michaelfox
This is post #2 of my programmer productivity series.
Before I embark on trying out various productivity strategies, I need to establish a set of metrics that will help me understand what works, and what doesn't.
For now I decided to keep track of two things:
1. My time, using a daily journal where I enter every task I am working on, and the time spent on it.
2. My commits, as well as the lines of code I add / delete throughout my day
If you want to follow along, I am using a simple notebook for my time tracking. I write one task per row, using the following format:
* 09:23 - 09:26 Coffee & Planning today's tasks (3m)
* 09:26 - 10:30 Work on setting up new server (1h 3m)
By writing out the time I start and end my tasks, it's pretty hard to miss an item.
git
productivity
tracking
time
efficient
programming
developer
development
Before I embark on trying out various productivity strategies, I need to establish a set of metrics that will help me understand what works, and what doesn't.
For now I decided to keep track of two things:
1. My time, using a daily journal where I enter every task I am working on, and the time spent on it.
2. My commits, as well as the lines of code I add / delete throughout my day
If you want to follow along, I am using a simple notebook for my time tracking. I write one task per row, using the following format:
* 09:23 - 09:26 Coffee & Planning today's tasks (3m)
* 09:26 - 10:30 Work on setting up new server (1h 3m)
By writing out the time I start and end my tasks, it's pretty hard to miss an item.
september 2010 by michaelfox
My Common Git Workflow « Katz Got Your Tongue?
september 2010 by michaelfox
A recent post that was highly ranked on Hacker News complained about common git workflows causing him serious pain. While I won’t get into the merit of his user experience complaints, I do want to talk about his specific use-case and how I personally work with it in git.
Best I can tell, Mike Taylor (the guy in the post) either tried to figure out a standard git workflow on his own, or he followed poor instructions that tried to bootstrap someone from an svn background while intentionally leaving out important information. In any event, I’ll step through my personal workflow for his scenario, contrasting with subversion as I go.
development
git
howto
svn
workflow
tips
Best I can tell, Mike Taylor (the guy in the post) either tried to figure out a standard git workflow on his own, or he followed poor instructions that tried to bootstrap someone from an svn background while intentionally leaving out important information. In any event, I’ll step through my personal workflow for his scenario, contrasting with subversion as I go.
september 2010 by michaelfox
• Sneakily switching from Subversion to Git | test.ical.ly
september 2010 by michaelfox
Toggle posts
A A+ A++
[Follow me on twitter]
Categories
* Book review
* Good to know
* Miscellaneous
* Outside the box
* Question
* The real job
* The right tool
* Workshop
*
Friends
o Daraff's Blog
o PHP hates me – Der PHP Blog
*
Sub-blog projects
o automat.ical.ly – Continuous Integration Server
o labor.ical.ly – symfony plugins that matter
o symfon.ical.ly – Test symfony Applikation
*
Technologies
o CruiseControl
o Hudson
o phpUnderControl
o PHPUnit
o symfony
Meta
* Log in
* RSS
* Comments RSS
Symfony Experts
May/10
7
Sneakily switching from Subversion to Git
6 Comments | Posted by Christian in The right tool
pink_panther_creeping_sneakilySome years ago I worked with CVS in the company I worked for at the time. The I took on another job and there switched to Subversion. It solved a lot of problems that CVS had but also introduced some new ones.
I changed jobs once more and am still working with Subversion. It works, it’s well known by the people I work with and I can live with it.
Or can I?
Well of course you can live with it. Maybe that’s the wrong question.
In recent months I read a lot of interesting stuff about Git especially in comparision to Subversion. I also witnessed the amazing Git session of Scott Chacon (of ProGit fame) and am curious ever since.
One of the major things said to be far better compared to Subversion is branching and it’s true branching is a big pain in Subversion. In for the branch, in for the merge.
But again I can live with that. I mean I know branching is painful so I do my best to avoid it or if I have to plan it very carefully. So far I was able to circumvent most troubles.
An though I was pondering the idea to switch to Git in my company in the end I didn’t because all workflows using Subversion were well established and we changed so much lately that I didn’t want to increase complexity by introducing yet another tool.
So a better question would be: What can Git do for you?
I found an answer to that question by realising that I used to use Subversion (and CVS before) for three different things.
* For version control obviously, having a backup history and all that.
* Then of course for public distribution. Using the central VCS server it is easy to make your sources available to the Open Source community or your colleagues or whoever it is you are working with and for.
But only when I realised the third use case I also realised that these before mentioned two uses always go together.
* Because I am using the VCS for private distribution as well.
I distinguish private distribution for it serves to get files from A to B within your development process. Sometimes you want to try out code on another server so you commit and update again. But this private use isn’t private it’s always public.
As there is only one central VCS server everybody working with the code will be able to checkout what you committed only to transfer it or only so you could have some more undo steps when developing something.
But code that you want to test somewhere else or that you want to have some undo steps for can rarely be considered stable. So by making private use of a VCS you always risk to have a public effect.
I realised when I learned that some of the users of my symfony plugin sfImageTransformExtraPlugin checkout from trunk rather than installing via PEAR. Of course they did, I just never really thought about it.
And this is where Git comes to the rescue.
Git isn’t central but decentral. You can have your own repository and use it for private distribution and a private history. You can have another one for public use where you only commit something stable and tested and that you want others to have. And transfering code from one repo to the next is as easy as it could be. Git is amazing at this.
So now using Git I can savely work with it the way I want without risking anyone to checkout dirty code. And because I use it only for myself as a development tool I still commit to the central Subversion server.
git
versioncontrol
svn
A A+ A++
[Follow me on twitter]
Categories
* Book review
* Good to know
* Miscellaneous
* Outside the box
* Question
* The real job
* The right tool
* Workshop
*
Friends
o Daraff's Blog
o PHP hates me – Der PHP Blog
*
Sub-blog projects
o automat.ical.ly – Continuous Integration Server
o labor.ical.ly – symfony plugins that matter
o symfon.ical.ly – Test symfony Applikation
*
Technologies
o CruiseControl
o Hudson
o phpUnderControl
o PHPUnit
o symfony
Meta
* Log in
* RSS
* Comments RSS
Symfony Experts
May/10
7
Sneakily switching from Subversion to Git
6 Comments | Posted by Christian in The right tool
pink_panther_creeping_sneakilySome years ago I worked with CVS in the company I worked for at the time. The I took on another job and there switched to Subversion. It solved a lot of problems that CVS had but also introduced some new ones.
I changed jobs once more and am still working with Subversion. It works, it’s well known by the people I work with and I can live with it.
Or can I?
Well of course you can live with it. Maybe that’s the wrong question.
In recent months I read a lot of interesting stuff about Git especially in comparision to Subversion. I also witnessed the amazing Git session of Scott Chacon (of ProGit fame) and am curious ever since.
One of the major things said to be far better compared to Subversion is branching and it’s true branching is a big pain in Subversion. In for the branch, in for the merge.
But again I can live with that. I mean I know branching is painful so I do my best to avoid it or if I have to plan it very carefully. So far I was able to circumvent most troubles.
An though I was pondering the idea to switch to Git in my company in the end I didn’t because all workflows using Subversion were well established and we changed so much lately that I didn’t want to increase complexity by introducing yet another tool.
So a better question would be: What can Git do for you?
I found an answer to that question by realising that I used to use Subversion (and CVS before) for three different things.
* For version control obviously, having a backup history and all that.
* Then of course for public distribution. Using the central VCS server it is easy to make your sources available to the Open Source community or your colleagues or whoever it is you are working with and for.
But only when I realised the third use case I also realised that these before mentioned two uses always go together.
* Because I am using the VCS for private distribution as well.
I distinguish private distribution for it serves to get files from A to B within your development process. Sometimes you want to try out code on another server so you commit and update again. But this private use isn’t private it’s always public.
As there is only one central VCS server everybody working with the code will be able to checkout what you committed only to transfer it or only so you could have some more undo steps when developing something.
But code that you want to test somewhere else or that you want to have some undo steps for can rarely be considered stable. So by making private use of a VCS you always risk to have a public effect.
I realised when I learned that some of the users of my symfony plugin sfImageTransformExtraPlugin checkout from trunk rather than installing via PEAR. Of course they did, I just never really thought about it.
And this is where Git comes to the rescue.
Git isn’t central but decentral. You can have your own repository and use it for private distribution and a private history. You can have another one for public use where you only commit something stable and tested and that you want others to have. And transfering code from one repo to the next is as easy as it could be. Git is amazing at this.
So now using Git I can savely work with it the way I want without risking anyone to checkout dirty code. And because I use it only for myself as a development tool I still commit to the central Subversion server.
september 2010 by michaelfox
• How to share the same working copy between Git and Subversion | test.ical.ly
september 2010 by michaelfox
Last week I wrote a small post about me sneakily switching to Git for my own workflows.
However at my working place I still have to work with Subversion or at least interact with it.
Normally I do this with Git-SVN but that is not available on all servers I have to work on.
Here is my current configuration to ease this.
Working with two version control systems on one working copy can be a pain as both Git and Subversion store their meta information in specific files within your working copy.
One won’t recognise the meta files of the other and so identify them as new files valid for addition. This can be prevented.
My Subversion configuration
// ~/.subversion/config
...
[miscellany]
global-ignores = *.git *.swp
...
Using this setting all Git information files within the working copy will be ignored so you won’t accidentally commit them.
My Git configuration
$ git config --global core.excludesfile ~/.gitignore
$ echo .svn >> ~/.gitignore
$ echo .swp >> ~/.gitignore
And the same for my Git configuration ignoring all Subversion information files.
git
svn
setup
environment
However at my working place I still have to work with Subversion or at least interact with it.
Normally I do this with Git-SVN but that is not available on all servers I have to work on.
Here is my current configuration to ease this.
Working with two version control systems on one working copy can be a pain as both Git and Subversion store their meta information in specific files within your working copy.
One won’t recognise the meta files of the other and so identify them as new files valid for addition. This can be prevented.
My Subversion configuration
// ~/.subversion/config
...
[miscellany]
global-ignores = *.git *.swp
...
Using this setting all Git information files within the working copy will be ignored so you won’t accidentally commit them.
My Git configuration
$ git config --global core.excludesfile ~/.gitignore
$ echo .svn >> ~/.gitignore
$ echo .swp >> ~/.gitignore
And the same for my Git configuration ignoring all Subversion information files.
september 2010 by michaelfox
bassistance.de » Git fu: Updating your GitHub fork
september 2010 by michaelfox
GitHub with their web interface makes it really easy to fork a project, but it leaves you alone when it comes to updating your fork with the changes in the original repository. Its actually really easy with a few steps:
git remote add original git://url-to-original-repo
This adds another remote repository. You can use git remote -v to see your existing remotes. There should be “origin” already, pointing to your GitHub fork. You can use whatever name you like for the new remote repository, above I’ve used “original”.
git fetch original
This loads all commits, including branches and tags, from the specified remote repository, using the alias defined above.
git merge original/master
This merges all changes from the original master branch in your current branch, eg. your local master branch.
git push
By default, push pushes everything to your “origin” repository. Which brings your repo up-to-date. That’s it!
git
github
git remote add original git://url-to-original-repo
This adds another remote repository. You can use git remote -v to see your existing remotes. There should be “origin” already, pointing to your GitHub fork. You can use whatever name you like for the new remote repository, above I’ve used “original”.
git fetch original
This loads all commits, including branches and tags, from the specified remote repository, using the alias defined above.
git merge original/master
This merges all changes from the original master branch in your current branch, eg. your local master branch.
git push
By default, push pushes everything to your “origin” repository. Which brings your repo up-to-date. That’s it!
september 2010 by michaelfox
related tags
*todo ⊕ aliases ⊕ apache ⊕ app ⊕ archive ⊕ automation ⊕ bash ⊕ bbedit ⊕ bestpractices ⊕ bisect ⊕ book ⊕ books ⊕ branch ⊕ branching ⊕ brew ⊕ browser ⊕ bugs ⊕ bugtracking ⊕ build ⊕ bundles ⊕ c ⊕ capistrano ⊕ character ⊕ cheatsheet ⊕ cli ⊕ code ⊕ codeigniter ⊕ codereview ⊕ collaboration ⊕ collection ⊕ command ⊕ compile ⊕ config ⊕ configuration ⊕ continuousintegration ⊕ contributing ⊕ control ⊕ core ⊕ cruisecontrol ⊕ csv ⊕ ctags ⊕ customization ⊕ data ⊕ database ⊕ delete ⊕ dependencies ⊕ deploy ⊕ deployment ⊕ developer ⊕ development ⊕ diff ⊕ discover ⊕ discovery ⊕ distributed ⊕ docs ⊕ documentation ⊕ dotfiles ⊕ download ⊕ ebooks ⊕ efficient ⊕ environment ⊕ etc ⊕ example ⊕ external ⊕ filter ⊕ foobar ⊕ fork ⊕ free ⊕ fugitive.vim ⊕ gh-pages ⊕ gist ⊕ git ⊖ git-hooks ⊕ git-reference ⊕ githook ⊕ githooks ⊕ github ⊕ github-repo ⊕ github-user:bobthecow ⊕ gitignore ⊕ gitolite ⊕ gitweb ⊕ guide ⊕ guides ⊕ hacks ⊕ helpers ⊕ history ⊕ homebrew ⊕ hook ⊕ hooks ⊕ hosting ⊕ howto ⊕ htaccess ⊕ http ⊕ hub ⊕ inspiration ⊕ inspiration:dotfiles ⊕ install ⊕ interface ⊕ ipad ⊕ java ⊕ javascript ⊕ library ⊕ linux ⊕ list ⊕ live ⊕ lorem ⊕ mac ⊕ macosx ⊕ macvim ⊕ managment ⊕ manuals ⊕ markdown ⊕ mercurial ⊕ merge ⊕ migrations ⊕ miniapp ⊕ model ⊕ mysql ⊕ notes ⊕ objective-c ⊕ opensource ⊕ organization ⊕ osx ⊕ pastie ⊕ pastie-325104 ⊕ phing ⊕ php ⊕ phpundercontrol ⊕ placeholder ⊕ plugin ⊕ plugins ⊕ post-commit ⊕ presentation ⊕ production ⊕ productivity ⊕ profile ⊕ programming ⊕ project ⊕ projectplus ⊕ projects ⊕ prompt ⊕ pull ⊕ push ⊕ python ⊕ rails ⊕ rebase ⊕ reference ⊕ remove ⊕ repo ⊕ repos ⊕ repository ⊕ resourc ⊕ resources ⊕ ruby ⊕ saas ⊕ sample ⊕ scm ⊕ screencast ⊕ scripts ⊕ search ⊕ security ⊕ server ⊕ settings ⊕ setup ⊕ shell ⊕ software ⊕ source ⊕ sourcecontrol ⊕ sql ⊕ stackoverflow ⊕ structure ⊕ subcommand ⊕ submodule ⊕ submodules ⊕ subversion ⊕ svn ⊕ symbol ⊕ syntax ⊕ sysadmin ⊕ template ⊕ terminal ⊕ testing ⊕ textmate ⊕ theme ⊕ time ⊕ tips ⊕ tmbundle ⊕ tools ⊕ tracking ⊕ tricks ⊕ tutorial ⊕ ubuntu ⊕ unicode ⊕ unix ⊕ update ⊕ updates ⊕ user.github ⊕ utility ⊕ validation ⊕ vc ⊕ vcs ⊕ version ⊕ versioncontrol ⊕ video ⊕ viewer ⊕ vim ⊕ virtualbox ⊕ warehouse ⊕ web ⊕ webapp ⊕ webdev ⊕ wordpress ⊕ workflow ⊕ xinc ⊕ zsh ⊕Copy this bookmark: