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 ] ...

[scapy] Linux-Cooked pcap to ethernet

# The pcap file formatted by "Linux cooked" # tcpdump -r myfile.pcap -nn reading from file event1.pcap, link-type LINUX_SLL (Linux cooked) ... ... # step1. read myfile.pcap pkts = rdpcap("myfile.pcap"); # step2. read myfile.pcap pkts = [Ether(src='00:11:22:33:44:55', dst='22:33:44:55:66:77')/pkt[1:] for pkt in pkts] # step3. modify IP address and recalculate chksum for pkt in pkts:  pkt[1].dst='192.168.1.10';  pkt[1].src='192.168.1.1';  del pkt[IP].chksum  del pkt[UDP].chksum # step4. packet send sendp(pkts[0]); # step5. save pcap  wrpcap("output.pcap",pkts); # tcpdump -r output.pcap -nn reading from file output.pcap, link-type EN10MB (Ethernet) ... ... # pkt[1:] : It means IP layer 1) Before: Linux cooked / IP / UDP / UDP-Data 2) After: Ethernet / IP / UDP / UDP-Data

sanitize on in CMakeLists.txt

1. CMakeLists.txt set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=address") add_compile_options(-fsanitize=address) If a subdir is set with add_subdirectory and a module that does not support sanitize is imported from the path and needs to be removed, add -fno-sanitize=address to add_compile_options in CMakeLists.txt of the subdir to remove it. Basically, if you enable sanitize, sanitize will adjust ulimit's core to 0, so core will not occur. You can do this by putting the following part as an environment variable. (Below is the part you put in systemd's service) 2. service file in systemd [Service] LimitCORE=infinity Environment="ASAN_OPTIONS=handle_segv=0:handle_abort=1:abort_on_error=1:disable_coredump=0"