diff --git a/README.md b/README.md index 97654df..5952be8 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,8 @@ Description * `Bespin` (directory) - settings for [BESpin](http://kde-look.org/content/show.php/Bespin?content=63928). It is stored in `$HOME/.config/`. * `festival` (directory tree) - settings for festival Russian speaking. * `get-coord-matrix.py` - python script which calculates xinput coordinate matrix for screens +* `git` (directory tree) - settings for git. Stored as `$HOME/.git` +* `gitconfig` - settings for git. Stored as `$HOME/.gitconfig` * `kbdlayout` (files) - settings for Russian language with layout switching on CapsLock. `20-keyboard.conf` (X11 settings) is stored in `/etc/X11/xorg.conf.d/`. `my.map.gz` (keymap) is stored in `/usr/share/kbd/keymaps/i386/qwerty`. * `local.conf` - custom settings for fontconfig. It is stored as `/etc/fonts/local.conf` * `qtcurve` (directory) - custom settings for QtCurve (including colors). diff --git a/git/templates/hooks/pre-commit b/git/templates/hooks/pre-commit new file mode 100644 index 0000000..e36c23f --- /dev/null +++ b/git/templates/hooks/pre-commit @@ -0,0 +1,72 @@ +!/usr/bin/env bash + +# Patterns to match a repo's "remote.origin.url" +git_remotes[0]="github" +git_remotes[1]="bitbucket" + +local_id_0[0]="Evgeniy Alekseev" +local_id_0[1]="darkarcanis@mail.ru" + +local_id_1[0]="Evgeniy Alekseev" +local_id_1[1]="ea@exante.eu" + +local_fallback_id[0]="${local_id_0[0]}" +local_fallback_id[1]="${local_id_0[1]}" + + +setIdentity() { + local current_id local_id + + current_id[0]="$(git config --get --local user.name)" + current_id[1]="$(git config --get --local user.email)" + local_id=("$@") + + if [[ "${current_id[0]}" == "${local_id[0]}" && + "${current_id[1]}" == "${local_id[1]}" ]]; then + printf " Local identity is:\n" + printf "» User: %s\n» Mail: %s\n\n" "${current_id[@]}" + else + printf "» User: %s\n» Mail: %s\n\n" "${local_id[@]}" + git config --local user.name "${local_id[0]}" + git config --local user.email "${local_id[1]}" + fi + + return 0 +} + + +current_remote_url="$(git config --get --local remote.origin.url)" + +if [[ "$current_remote_url" ]]; then + for service in "${git_remotes[@]}"; do + # Disable case sensitivity for regex matching + shopt -s nocasematch + if [[ "$current_remote_url" =~ $service ]]; then + case "$service" in + "${git_remotes[0]}" ) + printf "\n»» An Intermission\n» %s repository found." "${git_remotes[0]}" + setIdentity "${local_id_0[@]}" + exit 0 + ;; + "${git_remotes[1]}" ) + printf "\n»» An Intermission\n» %s repository found." "${git_remotes[1]}" + setIdentity "${local_id_1[@]}" + exit 0 + ;; + * ) + printf "\n» pre-commit hook: unknown error\n» Quitting.\n" + exit 1 + ;; + esac + fi + done +else + printf "\n»» An Intermission\n» No remote repository set. Using local fallback identity:\n" + printf "» User: %s\n» Mail: %s\n\n" "${local_fallback_id[@]}" + # Get the user's attention for a second + sleep 1 + git config --local user.name "${local_fallback_id[0]}" + git config --local user.email "${local_fallback_id[1]}" +fi + +exit 0 \ No newline at end of file diff --git a/gitconfig b/gitconfig new file mode 100644 index 0000000..5e5bd02 --- /dev/null +++ b/gitconfig @@ -0,0 +1,17 @@ +[user] + name = arcan1s + email = darkarcanis@mail.ru +[init] + templatedir = ~/.git/templates +[core] + autocrlf = false + safecrlf = false + editor = vim +[color] + ui = true +[credential] + helper = cache --timeout=3600 +[push] + default = simple +[merge] + tool = vimdiff diff --git a/zsh/sudo_aliases_server b/zsh/sudo_aliases_common similarity index 100% rename from zsh/sudo_aliases_server rename to zsh/sudo_aliases_common