Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
Colorize SVN
# Colorize SVN
# ------------
# Adds color to the output of commands like svn status and svn update.
# The original version of the script was posted by Ash_ on Stackoverflow
# Source:
function svn {
# Skip the color script when running an svn commit.
if [ "x$1" = "xci" ] || [ "x$1" = "xcommit" ] || [ "x$1" = "xadd" ]
command svn "$@";
# Pipe svn through awk to colorize its output.
command svn "$@" | awk '
if ($1=="C") {
print "\033[31m" $0 "\033[00m"; # Conflicts are displayed in red
else if ($1=="M") {
print "\033[31m" $0 "\033[00m"; # Modified in red
else if ($1=="A") {
print "\033[32m" $0 "\033[00m"; # Add in green
else if ($1=="?") {
print "\033[36m" $0 "\033[00m"; # New in cyan
else if ($1=="D") {
print "\033[31m" $0 "\033[00m"; # Delete in red
else if ($1=="U") {
print "\033[35m" $0 "\033[00m"; # Updated in light magenta
else if ($1=="X") {
print "\033[33m" $0 "\033[00m"; # No changes in yellow.
else if ($1=="At" || $1 == "External") {
print "\033[33m" $0 "\033[00m"; # Revision numbers in brown.
else {
print $0; # No color, just print the line
print cpt_c, " conflicts are found.";

This comment has been minimized.

Copy link

@4wk- 4wk- commented Feb 15, 2012

In standard configuration (svn only), note that discovered conflicts are stopping the script : indeed, when a file is conflicted, svn is handed over to the user, to let him type a few letters (see below)

# svn update
Conflict discovered in 'test.txt'.
Select: (p) postpone, (df) diff-full, (e) edit,
        (mc) mine-conflict, (tc) theirs-conflict,
        (s) show all options:

Please follow the discussion on Stackoverflow


This comment has been minimized.

Copy link

@arvind-clarion arvind-clarion commented Jul 2, 2014

hi its good but is we can also color to see which code we delete and which we updated like git ++ and -- with color


This comment has been minimized.

Copy link

@benkrikler benkrikler commented Jul 16, 2014

This was great!

To be able to redirect the output of these commands nicely though, I've added a bash test for tty output to the check for svn commit or add so that line 8 now reads:

 if [ "x$1" = "xci" ] || [ "x$1" =  "xcommit" ] || [ "x$1" = "xadd" ] || [ ! -t 1 ]

which gives something like the standard --color=auto option for other commands (grep, ls etc).


This comment has been minimized.

Copy link

@4wk- 4wk- commented Jun 2, 2017

Hello guys,

I'm the initial author of this snippet, and I've decided to bring it back to life:

@arvind-clarion: in the past few years, I already made this feature. See the link above ;)
@benkrikler: in my updated version, the svn add command is supported with beautifulSVN. Could you please try it, and let me now if you have any trouble? So far, I never encountered any difficulties with this specific sub-command, but I'ld be glad to fix it ;)


Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment