Skip to main content

make git_diff_wrapper

reference site: http://technotales.wordpress.com/2009/05/17/git-diff-with-vimdiff/

In fact, they need not be directly coded.
Just get git-difftool.
However, the following code would be useful to add what they want.

1) ~/.gitconfig
[diff]
  external = git_diff_wrapper
[pager]
  diff =

2) ~/bin/git_diff_wrapper

#!/bin/sh
# 1: orginal filename
# 2: left temporary filename
# 3:
# 4:
# 5: right temporary filename

DIR_BASENAME=`basename ${PWD}`
G_SZ_FN_LOG_FILE=/tmp/gitdiff_${DIR_BASENAME}_${PPID}.log
G_SZ_FN_TMP_ENV_FILE=/tmp/gitdiff_${DIR_BASENAME}_${PPID}.env
G_SZ_FN_RESUME_FILE="" 

DIFF_WC="" 
STIME=`date +%Y%m%d_%H%M%S`
SZ_TYPE="" 
DEF_ENV_MODE_NONE=0
DEF_ENV_MODE_SKIP=1
DEF_ENV_MODE_PROC=2
DEF_ENV_MODE_EXIT=3
G_SZ_ENV_MODE=${DEF_ENV_MODE_NONE}

if [ -f ${G_SZ_FN_TMP_ENV_FILE} ]; then
  G_SZ_ENV_MODE=`cat ${G_SZ_FN_TMP_ENV_FILE}`
fi

if [ ${G_SZ_ENV_MODE} == ${DEF_ENV_MODE_EXIT} ];then
  kill -9 ${PPID}
  exit
fi

if [ "$2" == "/dev/null" ]; then
  SZ_TYPE="L_NULL" 
elif [ "$5" == "/dev/null" ]; then
  SZ_TYPE="R_NULL" 
else
  if [ "${1}" == "${G_SZ_FN_RESUME_FILE}" ]; then
    G_SZ_ENV_MODE=${DEF_ENV_MODE_PROC}
    echo "${DEF_ENV_MODE_PROC}" > ${G_SZ_FN_TMP_ENV_FILE}
  elif [ "${G_SZ_FN_RESUME_FILE}" == "" ]; then
    G_SZ_ENV_MODE=${DEF_ENV_MODE_PROC}
  else
    if [ ${G_SZ_ENV_MODE} == ${DEF_ENV_MODE_NONE} ]; then
      G_SZ_ENV_MODE=${DEF_ENV_MODE_SKIP}
      echo "${G_SZ_ENV_MODE}" > ${G_SZ_FN_TMP_ENV_FILE}
    fi
  fi
  if [ "${G_SZ_ENV_MODE}" == "${DEF_ENV_MODE_SKIP}" ]; then
    SZ_TYPE="F_SKIP" 
  else
    DIFF_WC=`diff --strip-trailing-cr "$2" "$5" |wc -l`
    if [ ${DIFF_WC} -eq 0 ]; then
      SZ_TYPE="F_SAME" 
    else
      SZ_TYPE="S_DIFF" 
      echo "${STIME} ${SZ_TYPE} ${1} ${2} ${5} wc(${DIFF_WC})" >> ${G_SZ_FN_LOG_FILE}
      vimdiff "$2" "$5" 
      STIME=`date +%Y%m%d_%H%M%S`
      SZ_TYPE="E_DIFF" 
      echo "${STIME} ${SZ_TYPE} ${1} ${2} ${5} wc(${DIFF_WC})" >> ${G_SZ_FN_LOG_FILE}
      SZ_TYPE="" 
    fi
  fi
fi

if [ "${SZ_TYPE}" != "" ]; then
  echo "${STIME} ${SZ_TYPE} ${1} ${2} ${5} wc(${DIFF_WC})" >> ${G_SZ_FN_LOG_FILE}
fi

Comments

Popular posts from this blog

Redmine production.log to uri log

But.. It doesn't work well. (Because the sequence of line is not arranged.) It is better way to use ' redmine_access_logger' plugin than this #!/bin/bash # Setting LOG_FILE=/redmine-3.3.3/log/production.log #LOG_FILE=mylog.log PIDFILE=/var/run/redmine_info_log.pid # Program Variables OUTPUT_LOGDIR=`dirname ${LOG_FILE}` OPT_DEBUG=0 URI_FILTER_REGEX="(^\"/people/avatar)|(^/attachments/thumbnail/)|(^\"/issues/.*\.xml)" function echo_log() { if [ "$2" != "" ]; then echo "$1" >> $2 else echo "$1" fi } if [ -f $PIDFILE ] then PID=$(cat $PIDFILE) ps -p $PID > /dev/null 2>&1 if [ $? -eq 0 ] then echo "Process already running" exit 1 else ## Process not found assume not running echo $$ > $PIDFILE if [ $? -ne 0 ] then echo "Could not create PID file" exit 1 fi fi else echo $$ > $PIDFILE if [ $? -ne 0 ]

[docker/redmine] run redmine with sqlite3 in docker

Basic Rule:  I want to use "/home2/home/redmine" directory for redmine DB.  I want to use sqlite3 for redmine. 1. in host side  # adduser redmine 2. in host side. (go into dockers container for copying base files to host)  # docker run -it -v /home2/home/redmine/:/usr/src/redmine/HOST --name redmine -p 80:3000 redmine bash 2-1. in redmine container of docker : work dir is /usr/src/redmine  # cp -a config HOST/  # cp -a db HOST/  # exit 2-2. in host side : remove all docker contatiners  # docker rm $(docker ps -a -q) 2-3. in host side : chown directories.  # cd /home2/home/redmine  # chown redmine.redmine . -R 3. edit "/home2/home/redmine/config/database.yml" production:   adapter: sqlite3   database: sqlite/redmine.db   host: localhost 4. Run Redmine with daemonized.  # docker run -d -v /etc/passwd:/etc/passwd:ro -v /home2/home/redmine/DB:/usr/src/redmine/sqlite -v /home2/home/redmine/config:/usr/src/redmine/config -v /home2/home/redmin

[WordPress] Change https redirect in DB.

If you make an https redirect without thinking about SSL configuration: Check DB SELECT * from wp_options where option_name IN ('siteurl', 'home'); Update UPDATE wp_options SET option_value = REPLACE(option_value, 'https://your_domain', 'http://your_domain') WHERE option_name IN ('siteurl', 'home');