﻿<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://wiki.blender.jp/index.php?action=history&amp;feed=atom&amp;title=%E5%88%A9%E7%94%A8%E8%80%85%3ANazg-gul%2FDevTools</id>
	<title>利用者:Nazg-gul/DevTools - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.blender.jp/index.php?action=history&amp;feed=atom&amp;title=%E5%88%A9%E7%94%A8%E8%80%85%3ANazg-gul%2FDevTools"/>
	<link rel="alternate" type="text/html" href="https://wiki.blender.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Nazg-gul/DevTools&amp;action=history"/>
	<updated>2026-04-20T06:20:52Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.31.0</generator>
	<entry>
		<id>https://wiki.blender.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Nazg-gul/DevTools&amp;diff=106943&amp;oldid=prev</id>
		<title>Yamyam: 1版 をインポートしました</title>
		<link rel="alternate" type="text/html" href="https://wiki.blender.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Nazg-gul/DevTools&amp;diff=106943&amp;oldid=prev"/>
		<updated>2018-06-28T19:46:09Z</updated>

		<summary type="html">&lt;p&gt;1版 をインポートしました&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ja&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← 古い版&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;2018年6月28日 (木) 19:46時点における版&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ja&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(相違点なし)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Yamyam</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.blender.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Nazg-gul/DevTools&amp;diff=106942&amp;oldid=prev</id>
		<title>wiki&gt;Nazg-gul: /* Show branch in bash prompt */</title>
		<link rel="alternate" type="text/html" href="https://wiki.blender.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Nazg-gul/DevTools&amp;diff=106942&amp;oldid=prev"/>
		<updated>2015-03-29T17:33:44Z</updated>

		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Show branch in bash prompt&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=Developer Tools=&lt;br /&gt;
&lt;br /&gt;
Here's some developer tools used by me. Some of them are ported from [[User:Ideasman42#Development_Tools|here]] to fork with Git.&lt;br /&gt;
&lt;br /&gt;
== bachangelog-generator ==&lt;br /&gt;
&lt;br /&gt;
Here's a script I'm using to help generating bug fixes section of release logs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#echo -n &amp;quot;From revision: &amp;quot;&lt;br /&gt;
#read revision_from&lt;br /&gt;
revision_from=56521&lt;br /&gt;
&lt;br /&gt;
#echo -n &amp;quot;Up to revision: &amp;quot;&lt;br /&gt;
#read revision_to&lt;br /&gt;
revision_to=56521&lt;br /&gt;
&lt;br /&gt;
for r in `seq &amp;quot;${revision_from}&amp;quot; &amp;quot;${revision_to}&amp;quot;`; do&lt;br /&gt;
    h=`git svn find-rev &amp;quot;r${r}&amp;quot;`&lt;br /&gt;
&lt;br /&gt;
    if [ -z &amp;quot;${h}&amp;quot; ]; then&lt;br /&gt;
        # commit was done to another branch&lt;br /&gt;
        continue&lt;br /&gt;
    fi&lt;br /&gt;
&lt;br /&gt;
    msg=`git log --pretty=&amp;quot;%s%n%n%b&amp;quot; &amp;quot;${h}^&amp;quot;..&amp;quot;${h}&amp;quot; | grep -v &amp;quot;git-svn-id&amp;quot;`&lt;br /&gt;
&lt;br /&gt;
    # Skip svn maintaince commits&lt;br /&gt;
    maint=`echo &amp;quot;${msg}&amp;quot; | grep -i &amp;quot;SVN maintenance&amp;quot;`&lt;br /&gt;
    if [ ! -z &amp;quot;${maint}&amp;quot; ]; then&lt;br /&gt;
        continue&lt;br /&gt;
    fi&lt;br /&gt;
&lt;br /&gt;
    # Skip style and code cleanup commits&lt;br /&gt;
    cleanup=`echo &amp;quot;${msg}&amp;quot; | grep -i &amp;quot;^style cleanup&amp;quot;`&lt;br /&gt;
    if [ ! -z &amp;quot;${cleanup}&amp;quot; ]; then&lt;br /&gt;
        continue&lt;br /&gt;
    fi&lt;br /&gt;
&lt;br /&gt;
    cleanup=`echo &amp;quot;${msg}&amp;quot; | grep -i &amp;quot;^code cleanup&amp;quot;`&lt;br /&gt;
    if [ ! -z &amp;quot;${cleanup}&amp;quot; ]; then&lt;br /&gt;
        continue&lt;br /&gt;
    fi&lt;br /&gt;
&lt;br /&gt;
    git log --pretty=&amp;quot;-- {{Commit|${r}}} by %an ----------------%n&amp;quot; &amp;quot;${h}^&amp;quot;..&amp;quot;${h}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # todo:&lt;br /&gt;
    # - skip &amp;quot;committed by accident&amp;quot;&lt;br /&gt;
    # - support &amp;quot;Bugfix for&amp;quot;&lt;br /&gt;
    fix=`echo &amp;quot;${msg}&amp;quot; | grep -Ei &amp;quot;fix( for| bug|ed|es bug|es )?:?\s+\[?#[0-9]+\]?&amp;quot;`&lt;br /&gt;
    if [ ! -z &amp;quot;${fix}&amp;quot; ]; then&lt;br /&gt;
        bug=`echo &amp;quot;${fix}&amp;quot; | sed -r 's/.*#([0-9]+).*/\1/'`&lt;br /&gt;
        title=`echo &amp;quot;${fix}&amp;quot; | sed -r 's/.*fix( for| bug|ed|es bug)?:?\s+\[?#[0-9]+\]?:?\s*//i'`&lt;br /&gt;
        echo &amp;quot;Fix {{BugReport|$bug}}: ${title} ({{Commit|$r}})&amp;quot;&lt;br /&gt;
        echo&lt;br /&gt;
    fi&lt;br /&gt;
&lt;br /&gt;
    echo &amp;quot;${msg}&amp;quot;&lt;br /&gt;
    echo&lt;br /&gt;
    echo&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It could be optimized further, like ignoring style/code cleanup commits, but it's already helps a lot.&lt;br /&gt;
&lt;br /&gt;
== bcheck ==&lt;br /&gt;
&lt;br /&gt;
Script makes basic check for code style and it checks only lines being changed in current patch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
DIFF=`mktemp`&lt;br /&gt;
&lt;br /&gt;
git diff-index -p -M HEAD -- &amp;gt; $DIFF&lt;br /&gt;
&lt;br /&gt;
Lines=`wc -l &amp;lt; $DIFF`&lt;br /&gt;
&lt;br /&gt;
count=0&lt;br /&gt;
while [ $count -lt $Lines ]&lt;br /&gt;
do&lt;br /&gt;
    count=$(($count+1))&lt;br /&gt;
    LINE=`head -n $count $DIFF | tail -1`&lt;br /&gt;
&lt;br /&gt;
    if echo &amp;quot;$LINE&amp;quot; | grep -cqP '^diff --git a/.* b/(.*)$'; then&lt;br /&gt;
        filename=`echo &amp;quot;$LINE&amp;quot; | sed -r 's/^diff --git a\/.* b\/(.*)$/\1/'`&lt;br /&gt;
        continue&lt;br /&gt;
    fi&lt;br /&gt;
&lt;br /&gt;
    if echo &amp;quot;$LINE&amp;quot; | grep -cqP '^@@ -\S+ \+(\d+)'; then&lt;br /&gt;
        lineno=`echo &amp;quot;$LINE&amp;quot; | sed -r 's/^@@ -\S+ \+([0-9]+).*/\1/'`&lt;br /&gt;
        continue&lt;br /&gt;
    fi&lt;br /&gt;
&lt;br /&gt;
    if echo &amp;quot;$LINE&amp;quot; | grep -cqP '^ '; then&lt;br /&gt;
        lineno=$(($lineno+1))&lt;br /&gt;
        continue&lt;br /&gt;
    fi&lt;br /&gt;
&lt;br /&gt;
    if echo &amp;quot;$LINE&amp;quot; | grep -cqP '^\+'; then&lt;br /&gt;
        newline=`echo &amp;quot;$LINE&amp;quot; | sed -r 's/^\+//'`&lt;br /&gt;
&lt;br /&gt;
        if echo &amp;quot;$newline&amp;quot; | grep -cqP '\s$'; then&lt;br /&gt;
            echo &amp;quot;$filename:$lineno: Trailing whitespace&amp;quot;&lt;br /&gt;
        fi&lt;br /&gt;
&lt;br /&gt;
        if echo &amp;quot;$newline&amp;quot; | grep -cqP '^[&amp;lt;&amp;gt;=]{7}'; then&lt;br /&gt;
            echo &amp;quot;$filename:$lineno: Unresolved merge conflict&amp;quot;&lt;br /&gt;
        fi&lt;br /&gt;
&lt;br /&gt;
        if echo &amp;quot;$filename&amp;quot; | grep -cqP '\.py$'; then&lt;br /&gt;
            if echo &amp;quot;$newline&amp;quot; | grep -cqP '^ *\t'; then&lt;br /&gt;
                echo &amp;quot;$filename:$lineno: TAB used for indentation&amp;quot;&lt;br /&gt;
            fi&lt;br /&gt;
        else&lt;br /&gt;
            if echo &amp;quot;$newline&amp;quot; | grep -cqP '^\t* '; then&lt;br /&gt;
                if echo &amp;quot;$newline&amp;quot; | grep -cqP '^ {1,2}'; then&lt;br /&gt;
                    # do nothing -- most probably indentation for comment&lt;br /&gt;
                    echo &amp;quot;&amp;quot; &amp;gt; /dev/null&lt;br /&gt;
                else&lt;br /&gt;
                    echo &amp;quot;$filename:$lineno: SPACE used for indentation&amp;quot;&lt;br /&gt;
                fi&lt;br /&gt;
            fi&lt;br /&gt;
        fi&lt;br /&gt;
&lt;br /&gt;
        lineno=$(($lineno+1))&lt;br /&gt;
    fi&lt;br /&gt;
&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
rm $DIFF&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== bcheck-files ==&lt;br /&gt;
&lt;br /&gt;
This script checks style in all currently changed files and would report all issues met in that files.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
d=$PWD&lt;br /&gt;
&lt;br /&gt;
# get root directory of a repository&lt;br /&gt;
root=`git rev-parse --show-toplevel 2&amp;gt;/dev/null`&lt;br /&gt;
if [[ -z &amp;quot;$root&amp;quot; ]]; then&lt;br /&gt;
  root=`pwd`&lt;br /&gt;
  while [[ -d &amp;quot;`dirname $parent`/.svn&amp;quot; ]]; do&lt;br /&gt;
    root=`dirname $parent`&lt;br /&gt;
  done&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
cd $root&lt;br /&gt;
&lt;br /&gt;
# TODO: port to svn too&lt;br /&gt;
for f in `git diff --name-only -r HEAD`; do&lt;br /&gt;
  python3.2 $root/source/tools/check_style_c.py $f&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
cd $d&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== bpropcheck ==&lt;br /&gt;
&lt;br /&gt;
This script checks SVN properties assigned to source files and prints files and properties which are missing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
for f in `find . -type f`; do&lt;br /&gt;
    if echo &amp;quot;$f&amp;quot; | grep -cqP '\.[cpp|c|cc|h|hpp|cxx|py]$'; then&lt;br /&gt;
        # Checking source file&lt;br /&gt;
        keywords=`svn propget svn:keywords ${f}`&lt;br /&gt;
        eolstyle=`svn propget svn:eol-style ${f}`&lt;br /&gt;
&lt;br /&gt;
        if [ -z &amp;quot;$keywords&amp;quot; ]; then&lt;br /&gt;
            echo &amp;quot;$f: missing property svn:keywords&amp;quot;&lt;br /&gt;
        else&lt;br /&gt;
            echo &amp;quot;Author\nDate\nId\nRevision&amp;quot; | while read x; do&lt;br /&gt;
                if ! echo &amp;quot;$keywords&amp;quot; | grep -cqP &amp;quot;$x&amp;quot;; then&lt;br /&gt;
                    echo &amp;quot;$f: missing svn:keyword '$x'&amp;quot;&lt;br /&gt;
                fi&lt;br /&gt;
            done&lt;br /&gt;
        fi&lt;br /&gt;
&lt;br /&gt;
        if [ -z &amp;quot;$eolstyle&amp;quot; ]; then&lt;br /&gt;
            echo &amp;quot;$f: missing property svn:eol-style&amp;quot;&lt;br /&gt;
        else&lt;br /&gt;
            if [ &amp;quot;$eolstyle&amp;quot; != &amp;quot;native&amp;quot; ]; then&lt;br /&gt;
                echo &amp;quot;$f: svn:eol-style expected 'native' but '$eolstyle' found&amp;quot;&lt;br /&gt;
            fi&lt;br /&gt;
        fi&lt;br /&gt;
    fi&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== bsrcprop ==&lt;br /&gt;
&lt;br /&gt;
This script resets required SVN properties for list of source files.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
for x in $@; do&lt;br /&gt;
    svn propset svn:keywords 'Author Date Id Revision' $x&lt;br /&gt;
    svn propset svn:eol-style native $x&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== bsymlink-cycles ==&lt;br /&gt;
&lt;br /&gt;
I've got WITH_PYTHON_INSTALL disabled in my CMake configuration which makes it a bit difficult to check issues appearing in Cycles.&lt;br /&gt;
&lt;br /&gt;
Here's a small utility script which allows to use Cycles with all the features like GPU rendering and OpenShadingLanguage. It basically initializes Cycle addon's directory structure with a symbolic links to source tree and compiler OSL shaders.&lt;br /&gt;
&lt;br /&gt;
Simply running it from ~/.config/blender/2.69/scripts/addons/cycles will do all the job done and you'll be ready to use Cycles (tweak blender version in the path if needed)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
SOURCE_TREE=&amp;quot;$HOME/src/blender/blender/&amp;quot;&lt;br /&gt;
BUILD_DIR=&amp;quot;$HOME/src/blender/build/cmake-debug/&amp;quot;&lt;br /&gt;
ADDON_PATH=$PWD&lt;br /&gt;
&lt;br /&gt;
if [ $# -ne 0 ]; then&lt;br /&gt;
  echo &amp;quot;Usage: $0&amp;quot;&lt;br /&gt;
  exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Clear previous symbolic links...&amp;quot;&lt;br /&gt;
for file_path in &amp;quot;$ADDON_PATH&amp;quot;/* &amp;quot;$ADDON_PATH&amp;quot;/kernel/* &amp;quot;$ADDON_PATH&amp;quot;/shader/*; do&lt;br /&gt;
  file_name=`basename $file_path`&lt;br /&gt;
  if [ &amp;quot;$file_name&amp;quot; == &amp;quot;init.sh&amp;quot; ]; then&lt;br /&gt;
    continue&lt;br /&gt;
  elif [ -h &amp;quot;$file_path&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;  Unlinking $file_path&amp;quot;&lt;br /&gt;
    unlink $file_path&lt;br /&gt;
  fi&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Creating symbolic links for addon...&amp;quot;&lt;br /&gt;
for file_path in &amp;quot;$SOURCE_TREE&amp;quot;/intern/cycles/blender/addon/*; do&lt;br /&gt;
  file_name=`basename $file_path`&lt;br /&gt;
  if [ &amp;quot;$file_name&amp;quot; == &amp;quot;__pycache__&amp;quot; ]; then&lt;br /&gt;
    continue&lt;br /&gt;
  fi&lt;br /&gt;
  echo &amp;quot;  Linking to $file_name&amp;quot;&lt;br /&gt;
  ln -s &amp;quot;$file_path&amp;quot; &amp;quot;$ADDON_PATH/$file_name&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Creating symbolic links for kernel...&amp;quot;&lt;br /&gt;
mkdir -p &amp;quot;$ADDON_PATH&amp;quot;/kernel&lt;br /&gt;
for file_path in &amp;quot;$SOURCE_TREE&amp;quot;/intern/cycles/kernel/*; do&lt;br /&gt;
  file_name=`basename $file_path`&lt;br /&gt;
  if [ &amp;quot;$file_name&amp;quot; == &amp;quot;shaders&amp;quot; ]; then&lt;br /&gt;
    continue&lt;br /&gt;
  fi&lt;br /&gt;
  echo &amp;quot;  Linking to $file_name&amp;quot;&lt;br /&gt;
  ln -s &amp;quot;$file_path&amp;quot; &amp;quot;$ADDON_PATH/kernel/$file_name&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Creating symbolic links for OSL shaders...&amp;quot;&lt;br /&gt;
mkdir -p &amp;quot;$ADDON_PATH&amp;quot;/shader&lt;br /&gt;
# TODO(sergey): Sypport SCons&lt;br /&gt;
if [ -f &amp;quot;$BUILD_DIR&amp;quot;/CMakeCache.txt ]; then&lt;br /&gt;
  for file_path in &amp;quot;$BUILD_DIR&amp;quot;/intern/cycles/kernel/osl/nodes/*; do&lt;br /&gt;
    file_name=`basename $file_path`&lt;br /&gt;
    file_extension=&amp;quot;${file_name##*.}&amp;quot;&lt;br /&gt;
    if [ &amp;quot;$file_extension&amp;quot; == &amp;quot;oso&amp;quot; ]; then&lt;br /&gt;
      echo &amp;quot;  Linking to $file_name&amp;quot;&lt;br /&gt;
      ln -s &amp;quot;$file_path&amp;quot; &amp;quot;$ADDON_PATH/shader/$file_name&amp;quot;&lt;br /&gt;
    fi&lt;br /&gt;
  done&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Creating symbolic links to utility headers...&amp;quot;&lt;br /&gt;
for header in util_color.h util_math.h util_transform.h util_types.h; do&lt;br /&gt;
  echo &amp;quot;  Linking to $header&amp;quot;&lt;br /&gt;
  ln -s &amp;quot;$SOURCE_TREE/intern/cycles/util/$header&amp;quot; &amp;quot;$ADDON_PATH/kernel/$header&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
for file_path in &amp;quot;$SOURCE_TREE&amp;quot;/intern/cycles/kernel/shaders/*; do&lt;br /&gt;
  file_name=`basename $file_path`&lt;br /&gt;
  file_extension=&amp;quot;${file_name##*.}&amp;quot;&lt;br /&gt;
  if [ &amp;quot;$file_extension&amp;quot; == &amp;quot;h&amp;quot; ]; then&lt;br /&gt;
    echo &amp;quot;  Linking to $file_name&amp;quot;&lt;br /&gt;
    ln -s &amp;quot;$file_path&amp;quot; &amp;quot;$ADDON_PATH/shader/$file_name&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== svn-diff ==&lt;br /&gt;
&lt;br /&gt;
Script creates svn-compatible patch for changes made in git-svn repo. Ininitally it was found in yandex or Git mailing list, not sure..&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# Generate an SVN-compatible diff against the tip of the tracking branch&lt;br /&gt;
&lt;br /&gt;
TRACKING_BRANCH=`git config --get svn-remote.svn.fetch | sed -e 's/.*:refs\/remotes\///'`&lt;br /&gt;
REV=`git svn find-rev $(git rev-list --date-order --max-count=1 $TRACKING_BRANCH)`&lt;br /&gt;
git diff --no-prefix $(git rev-list --date-order --max-count=1 $TRACKING_BRANCH) $* |&lt;br /&gt;
  sed -e &amp;quot;s/^+++ .*/&amp;amp;\t(working copy)/&amp;quot; -e &amp;quot;s/^--- .*/&amp;amp;\t(revision $REV)/&amp;quot; \&lt;br /&gt;
      -e &amp;quot;s/^diff --git [^[:space:]]*/Index:/&amp;quot; \&lt;br /&gt;
      -e &amp;quot;s/^index.*/===================================================================/&amp;quot; \&lt;br /&gt;
   -r -e &amp;quot;s/^(@@ \-[0-9]+,[0-9]+ \+[0-9]+,[0-9]+ @@).*/\1/&amp;quot; |&lt;br /&gt;
  sed -r -e 'N;N; s/\n---\s\/dev\/null\s\(revision [0-9]+\)\n\+\+\+ (.*)?\s\(working copy\)/\n--- \1\t(revision 0)\n+++ \1\t(revision 0)/' \&lt;br /&gt;
         -e 's/\nnew file mode [0-9]+//' \&lt;br /&gt;
         -e 's/\ndeleted file mode [0-9]+//' \&lt;br /&gt;
         -e 'N;N; s/\n\-\-\- (.*)?\s\(revision ([0-9]+)\)\n\+\+\+\s\/dev\/null\s\(working copy\)/\n--- \1\t(revision \2)\n+++ \1\t(working copy)/' &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== touchdiff ==&lt;br /&gt;
&lt;br /&gt;
Ported from script by Campbell Barton: Sometimes you want to know if any of the files you edited caused errors. Rebuilds you may have missed some so touching all modified files, then rebuilding is useful for this.&lt;br /&gt;
&lt;br /&gt;
Add this to your ~/.bashrc file. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
alias touchdiff='git status &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&amp;amp; touch `git diff --name-only -r HEAD --relative .` || touch `svn st | grep &amp;quot;^M&amp;quot; | cut -f4-8 -d&amp;quot; &amp;quot;`'&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Show branch in bash prompt ==&lt;br /&gt;
&lt;br /&gt;
Adding this to ~/.bashrc will make it so command prompt contains name of current branch in git repository.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Black='\[\033[00;30m\]';&lt;br /&gt;
Blue='\[\033[00;34m\]';&lt;br /&gt;
Green='\[\033[00;32m\]';&lt;br /&gt;
Cyan='\[\033[00;36m\]';&lt;br /&gt;
Red='\[\033[00;31m\]';&lt;br /&gt;
Purple='\[\033[00;35m\]';&lt;br /&gt;
Brown='\[\033[00;33m\]';&lt;br /&gt;
LGray='\[\033[00;37m\]';&lt;br /&gt;
DGray='\[\033[01;30m\]';&lt;br /&gt;
LBlue='\[\033[01;34m\]';&lt;br /&gt;
LGreen='\[\033[01;32m\]';&lt;br /&gt;
LCyan='\[\033[01;36m\]';&lt;br /&gt;
LRed='\[\033[01;31m\]';&lt;br /&gt;
LPurple='\[\033[01;35m\]';&lt;br /&gt;
Yellow='\[\033[01;33m\]';&lt;br /&gt;
White='\[\033[01;37m\]';&lt;br /&gt;
Normal='\[\033[00m\]';&lt;br /&gt;
&lt;br /&gt;
__bashrc_git_ps1()&lt;br /&gt;
{&lt;br /&gt;
  if git rev-parse --git-dir &amp;gt; /dev/null 2&amp;gt;&amp;amp;1;  then&lt;br /&gt;
    #local b=&amp;quot;$(git symbolic-ref HEAD 2&amp;gt;/dev/null)&amp;quot;;&lt;br /&gt;
    git_dir=`git rev-parse --git-dir`&lt;br /&gt;
    if [ &amp;quot;`basename \&amp;quot;$git_dir\&amp;quot;`&amp;quot; == '.git' ]; then&lt;br /&gt;
        GIT=&amp;quot;git -C ${git_dir}/..&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
        GIT=&amp;quot;git&amp;quot;&lt;br /&gt;
    fi&lt;br /&gt;
    local b=&amp;quot;$($GIT branch | sed -n '/\* /s///p' 2&amp;gt;/dev/null)&amp;quot;;&lt;br /&gt;
    if [ -n &amp;quot;$b&amp;quot; ]; then&lt;br /&gt;
        local status=&amp;quot;&amp;quot;&lt;br /&gt;
        local changed_files=&amp;quot;$($GIT diff-index --name-only HEAD -- | wc -l)&amp;quot;&lt;br /&gt;
        local new_commits=&amp;quot;$($GIT log --oneline @{u}.. 2&amp;gt;/dev/null | wc -l)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        if [ ! &amp;quot;$new_commits&amp;quot; -eq &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
            status=&amp;quot;$status($new_commits)&amp;quot;&lt;br /&gt;
        fi&lt;br /&gt;
&lt;br /&gt;
        if [ ! &amp;quot;$changed_files&amp;quot; -eq &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
            status=&amp;quot;$status[M]&amp;quot;&lt;br /&gt;
        fi&lt;br /&gt;
&lt;br /&gt;
        if [ ! -z &amp;quot;$status&amp;quot; ]; then&lt;br /&gt;
            status=&amp;quot; $status&amp;quot;&lt;br /&gt;
        fi&lt;br /&gt;
&lt;br /&gt;
        printf &amp;quot; (${b##refs/heads/}${status})&amp;quot;;&lt;br /&gt;
    fi&lt;br /&gt;
  fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
PS1='${debian_chroot:+($debian_chroot)}'&amp;quot;${Green}\u${Normal}@${Yellow}\h${Normal}:${LBlue}\w${Green}&amp;quot;'$(__bashrc_git_ps1)'&amp;quot;${Normal}\$ &amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Git hooks ==&lt;br /&gt;
&lt;br /&gt;
=== pre-commit ===&lt;br /&gt;
&lt;br /&gt;
Disallows git commit when there're staged changes to the submodules hash.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
ROOT=`git rev-parse --show-toplevel`&lt;br /&gt;
SUBMODULES=`grep path ${ROOT}/.gitmodules | sed 's/.*= //'`&lt;br /&gt;
&lt;br /&gt;
have_changed_submodules=false&lt;br /&gt;
for submodule in $SUBMODULES; do&lt;br /&gt;
  status=`git diff --ignore-submodules=none --cached --name-only $ROOT/$submodule`&lt;br /&gt;
  if [ ! -z ${status} ]; then&lt;br /&gt;
    echo &amp;quot;Changed and staged submodule: $submodule&amp;quot;&lt;br /&gt;
    have_changed_submodules=true&lt;br /&gt;
  fi&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
if $have_changed_submodules; then&lt;br /&gt;
  echo &amp;quot;&amp;quot;&lt;br /&gt;
  echo &amp;quot;Some of the submodules are changed. This should not normally happen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  if [ -z ${FORCE_SUBMODULES} ]; then&lt;br /&gt;
  echo &amp;quot;&amp;quot;&lt;br /&gt;
    echo &amp;quot;If you REALLY need to commit changes to submodule, use FORCE_SUBMODULES&amp;quot;&lt;br /&gt;
    echo &amp;quot;environment variable like this:&amp;quot;&lt;br /&gt;
    echo &amp;quot;&amp;quot;&lt;br /&gt;
    echo &amp;quot;  FORCE_SUBMODULES=1 git commit&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
  else&lt;br /&gt;
    echo &amp;quot;Commit of staged submodules was forced.&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you actually need to commit changes to hash use:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 FORCE_SUBMODULES=1 git commit&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== prepare-commit-msg ===&lt;br /&gt;
&lt;br /&gt;
Put information about submodules changes to be added to the commit.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
ROOT=`git rev-parse --show-toplevel`&lt;br /&gt;
SUBMODULES=`grep path ${ROOT}/.gitmodules | sed 's/.*= //'`&lt;br /&gt;
&lt;br /&gt;
first_time=true&lt;br /&gt;
for submodule in $SUBMODULES; do&lt;br /&gt;
  status=`git diff --ignore-submodules=none --cached --name-only $ROOT/$submodule`&lt;br /&gt;
  if [ ! -z ${status} ]; then&lt;br /&gt;
    if $first_time; then&lt;br /&gt;
      echo &amp;quot;# Submodules to be committed:&amp;quot; &amp;gt;&amp;gt; $1&lt;br /&gt;
    fi&lt;br /&gt;
    echo &amp;quot;#\tmodified:   $submodule&amp;quot; &amp;gt;&amp;gt; $1&lt;br /&gt;
    first_time=false&lt;br /&gt;
  fi&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>wiki&gt;Nazg-gul</name></author>
		
	</entry>
</feed>