TikZ is a (La)TeX package for drawing all sorts of diagrams. I use it for most of my drawing needs. Its features include:
- Intuitive language syntax
- Vector graphics (so you could scale your poster to any size),
- A huge selection of libraries,
- Ability to define custom commands and styles
- A detailed user manual,
- Excellent community support on TeX.SE (most popular question tag over there with nearly 9000 questions).
Here is an example of the first part of your diagram as drawn with TikZ:

Source code for above diagram:
\documentclass[tikz,border=2pt]{standalone}
\usetikzlibrary{shapes,positioning,arrows}
\tikzstyle{revision}=[draw,circle,inner sep=2pt]
\tikzstyle{trunkline}=[draw,ultra thick,postaction={draw,thick,color=white}]
\begin{document}
\begin{tikzpicture}[node distance=1cm and 2cm]
\node[minimum width=4cm] (footrunk) {Foo trunk:};
\node[revision,right= of footrunk,right=5mm,fill=gray!60] (rev12345) {};
\node[revision,right= of rev12345] (rev12346) {};
\node[revision,right= of rev12346,right=3cm] (rev12347) {};
\node[revision,right= of rev12347] (rev12348) {};
\node[minimum width=4cm,below= of footrunk,above] (maintenance1) {Foo 1.0.x maintenance};
\node[revision,below=of rev12346,above] (fix10) {};
\node[revision,right=of fix10] (fix101) {};
\node[minimum width=4cm,below= of maintenance1,above] (maintenance2) {Foo 1.1.x maintenance};
\node[revision,node distance=2cm,below=of rev12347,above] (fix11) {};
\node[revision,right=of fix11] (fix111) {};
\draw[trunkline] (rev12345) -- node[font=\scriptsize,fill=white]{dev1.0} (rev12346);
\draw[trunkline] (rev12346) -- node[font=\scriptsize,fill=white]{dev1.1} (rev12347);
\draw[trunkline] (rev12347) -- node[font=\scriptsize,fill=white]{dev1.2} (rev12348);
\draw[very thick,dotted,-stealth'] (rev12348) -- ++(1cm,0);
\draw (rev12346) -- (fix10);
\draw (fix10) -- node[font=\scriptsize,fill=white]{fix1.0.1} (fix101);
\draw[thick,blue,dashed,-stealth'] (fix101) -- (rev12347);
\draw (rev12347) -- (fix11);
\draw (fix11) -- node[font=\scriptsize,fill=white]{fix1.1.1} (fix111);
\end{tikzpicture}
\end{document}
Edit concerning automation
To automate these diagrams, you'll have to make use of the macros in the TikZ package. Since performing mathematical operations in TikZ is still a pain, it's even better if you could use another powerful language to edit the tex
file, like Perl or Python. These can also be used to extract data from your SVN log files, achieving a fully automated process.
Here is an attempt to automate the above diagram using TikZ alone with 3 input variables: First and last revs, and number of branches. Of course, this works only for this specific form of trees, but it'll serve as an example on how macros work.
main script
\documentclass[tikz,border=2pt]{standalone}
\usetikzlibrary{shapes,positioning,arrows}
% Macros
\input{svn_macros}
% Configuration
\newcommand\FirstRevNumber{12345}
\newcommand\CurrentRevNumber{12348}
\newcommand\FixCount{2}
% End of configuration
\begin{document}
\begin{tikzpicture}[node distance=1cm and 1.5cm]
\node[minimum width=4cm] (0) {Foo trunk:};
\firstrevision{\FirstRevNumber}{0}
\foreach \rev [count=\counter from 0] in {\FirstRevNumber,...,\CurrentRevNumber}{
\pgfmathtruncatemacro{\NextRev}{\rev+1}
\pgfmathtruncatemacro{\FixNum}{\counter+1}
\revision{\NextRev}{\rev}\mainline{\rev}{\NextRev}{dev1.\counter}
\ifnum\counter<\FixCount
\node[minimum width=4cm,below= of \counter,above] (\FixNum) {Foo 1.\counter.x maintenance};
\newfix[\FixNum]{1\counter}{\NextRev}
\fix{1\counter1}{1\counter}
\branchline{1\counter}{1\counter1}{fix1.\counter.1}
\fi
}
\foreach \rev [count=\counter from 0] in {\FirstRevNumber,...,\CurrentRevNumber}{
\pgfmathtruncatemacro{\SecondNextRev}{\rev+2}
\ifnum\counter<\FixCount
\draw[thick,blue,dashed,-stealth'] (1\counter1) -- (\SecondNextRev);
\fi
}
\end{tikzpicture}
\end{document}
imported file
\newcommand\firstrevision[2]{\node[draw,circle,inner sep=2pt,right= of #2,right=5mm,fill=gray!60](#1){};}
\newcommand\revision[2]{\node[draw,circle,inner sep=2pt,right= of #2,right=2cm](#1){};}
\newcommand\newfix[3][1]{\node[draw,circle,node distance=#1cm,inner sep=2pt,below= of #3,above](#2){};\draw (#3) -- (#2);}
\newcommand\fix[2]{\node[draw,circle,inner sep=2pt,right= of #2](#1){};}
\newcommand\mainline[3]{\draw[ultra thick,postaction={draw,thick,color=white}] (#1) -- node[font=\scriptsize,fill=white]{#3} (#2);}
\newcommand\branchline[3]{\draw (#1) -- node[font=\scriptsize,fill=white]{#3} (#2);}
This would produce a similar tree to the above figure, but if you increase the numbers in the Configuration section (12345, 12360, and 8, for example), you could end up with a pretty long tree:
Result

(Click image for bigger version)