Apache Subversion header

Update Subversion commit authors

This week I faced the need to edit commit authors. Thanks to the new LDAP authentication, I need to change the way users log on the server. The side effect is the manually declared users differ from the LDAP user names. To keep consistent, I updated the previous commit authors with their new LDAP names. For those who have the same need, I share my script below:

# Subject: Bash script to update commit authors.
# Author: Bruce BUJON (bruce.bujon@gmail.com)
# Description: This script use a dictionary (AUTHORS) to replace a Subversion repository commit authors.
# Usage: Edit REPOSITORY_PATH and AUTHORS variables then run the script.

# The repository path
# Get the repository head revision
HEAD=`svn info $REPOSITORY_PATH | grep Revision: | cut -c11-`
# The authors (keys are original authors, values are replaced authors)
declare -A AUTHORS
AUTHORS=( ["olduser1"]="newuser1" ["olduser2"]="newuser2")

# Process each revision up to head
for revision in $(seq 1 $HEAD)
  echo -n "Processing revision $revision: "
  # Get revision author
  author=`svn propget --revprop svn:author -r $revision $REPOSITORY_PATH`
  # Check if replacement author is available
  if [[ ! -z "$newauthor" ]]; then
    # Update commit author
    output=$(svn propset --revprop svn:author $newauthor -r $revision $REPOSITORY_PATH 2>&1)
    # Check update status
    if [ $result != 0 ]; then
      # An error occurred
      echo "an error occurred!"
      echo $output
      exit -1
      # Author replaced
      echo "author replaced ($author > $newauthor)."
    # Author kept
    echo "author kept."
# End of script
echo "$HEAD revisions successfully proceed."

Note that you will the server allows revision property changes. To do that, ensure the pre-revprop-change hook return 0, at least the time of the maintenance. You don’t want your users editing the commit authors and logs to make you a joke.

Apache Subversion header

Svnbook in epub

If like me you use Play Book to store books and manuals, you will be sad to read the great Subversion book: svnbook. PDF format import fails to parse table of content and its navigation links. So I make the epub build of the book and everything works well now.

So for everyone who need it, I share the svnbook under the epub format:

The Subversion book epub

Please note svnbook is maintained by svnbook.red-bean.com under open source licence.

Adobe Flash header

Why Flash is still alive ?

I post today to ask an open question : « Why Flash is still alive ? ». Some days ago I was raging again Flash on some website when I wondered why Flash is always used ? In my computer user life, I lost several hours trying to get Flash work properly. Bad Linux support, browser freezes, oh wait, making a list !


  • CPU and memory consumptions (for the player itself and browser sandbox),
  • Security leaks and intrusion vector (see Adobe security bulletins numbers and date),
  • Bad support for OS other than Windows (only old and vulnerable versions for Linux),
  • No multiple screens support (start player from one screen, move it to a second one and go fullscreen: player displays content on full first screen),
  • Freezes and BSOD (under Windows at least),
  • Invasive updater (does not take care of user update preferences, no proxy settings, deletes itself if download fails, offline installer well hidden in Adobe site),
  • No more supported on mobile devices (Android, iOS, WP8).


  • Advanced features for video player (stream quality switch, ads overlay),
  • Fast and cheap indy game development.

For the video player advanced features, I think web standard evolutions will quickly offer equivalent features (including standard adoption in browsers). Technologies like WebRTC show how browsers evolved into natively supported multimedia platforms. For the Flash browser game, how long could they fight against full web games when you see that Unreal Engine 3 works with JS and WebGL ? Or against the Chrome gamepad API ?

And how long browser developers will let Flash ruin their hard work of speeding up and responsibility increase ? Remember the other Adobe software plugged in browser, Reader, was brushed aside by some lines of fast JS.

Definitely Flash belongs to the past. But for how long will it remain in the present ?

Android header

Air Playit and IPv6

Air PlayitI was looking for a way to stream my desktop videos to my N7 when I discovered Air Playit.

Despite it well well finished website, the Android application is really painful. From the first steps, the app forces close. Don’t think to use auto discovery to find your airplay server without crash. And add manually a server ? Crash also.

I grabbed an USB plug to check logcat and I saw NullPointerException on String manipulation. A NPE causing app crash ? The start of pain… A quick look into smali code confirmed my thoughts: the app tried to split an IPv6 with  « . » (dot) separator… Quick fixing (in smali), recompilating and packing to skip IPv6 allowed me to add manually a server. I have at last listed my movies on my N7.

Hopeful, I tried to read a stream a content. No way. Still blank screen with audio. And without app source, I don’t have the courage to fix the software decoder… (and why the app does not use Intent to use my media reader instead of the crappy embedded one ?). Damn.

The pain continues with the ugly GUI (why use so many resources to get iOS look and feel on Android ?), the crash when failing the SD card detection (whereas Google discourage manufactors to add them to new device) and the developer team which does not answer to the fourteen pages of users complaining about app crash.

Finally, I use Windows sharings, Solid Explorer (with Samba) and MX player (with hardware stream decoder). It works, does not load my computer with encoding and save my batery. What else ?