Skip to content

Instantly share code, notes, and snippets.

@svetlyak40wt
Created March 31, 2010 07:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save svetlyak40wt/350063 to your computer and use it in GitHub Desktop.
Save svetlyak40wt/350063 to your computer and use it in GitHub Desktop.
#!/bin/bash
# Remote araxis merge script
# --------------------------
# Author: Alexander Artemenko <svetlyak.40wt@gmail.com>
#
# Save this script somewhere on the remote server,
# for example as ~/usr/bin/araxisgitmerge.
#
# Add these lines on your desktop's ~/.ssh/config
#
# Host *
# RemoteForward *:8888 localhost:22
#
# Then, add these lines in you remote ~/.gitconfig
#
# [mergetool "araxismergetool"]
# cmd = ~/usr/bin/araxisgitmerge "$PWD/$REMOTE" "$PWD/$BASE" "$PWD/$LOCAL" "$PWD/$MERGED"
# trustExitCode = false
#
# [mergetool]
# keepBackup = false
#
# [merge]
# tool = araxismergetool
REMOTE_HOST=localhost
REMOTE_PORT=8888
REMOTE_BINARY=/usr/local/bin/araxisgitmerge
REMOTE_TMP_DIR=/tmp/araxis
SSH="ssh -p $REMOTE_PORT $REMOTE_HOST"
SCP="scp -q -P $REMOTE_PORT"
REMOTE=$1
BASE=$2
LOCAL=$3
MERGED=$4
REMOTE_FILE="$REMOTE_TMP_DIR/$(basename $REMOTE)"
BASE_FILE="$REMOTE_TMP_DIR/$(basename $BASE)"
LOCAL_FILE="$REMOTE_TMP_DIR/$(basename $LOCAL)"
MERGED_FILE="$REMOTE_TMP_DIR/$(basename $MERGED)"
$SSH "mkdir -p '$REMOTE_TMP_DIR'"
$SCP "$REMOTE" "$REMOTE_HOST:$REMOTE_FILE"
$SCP "$BASE" "$REMOTE_HOST:$BASE_FILE"
$SCP "$LOCAL" "$REMOTE_HOST:$LOCAL_FILE"
$SSH "$REMOTE_BINARY $REMOTE_FILE $BASE_FILE $LOCAL_FILE $MERGED_FILE"
$SCP "$REMOTE_HOST:$MERGED_FILE" "$MERGED"
$SSH "rm -f $REMOTE_FILE"
$SSH "rm -f $BASE_FILE"
$SSH "rm -f $LOCAL_FILE"
$SSH "rm -f $MERGED_FILE"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment