Jeff et al.,|
Yes, "if Ganymatic is file copying, why is it a pain to keep running?"
is a legitimate question. The two things that Ganymatic does beyond
just copying files are:
- It finds the transitive closure of the files that need copying
(by following the dependencies listed in the features and plug-ins). If
we didn't have this feature in Ganymatic, then each project would have
to describe exactly the set of files that they are contributing rather
than just the root features.
- It merges the site.xmls from all the projects into a single
site.xml listing all the features, etc.
The most common ways for it to fail are:
- A bug in the update manager, because it uses the update manager
to do the file copying.
- A project team updates the files on their own update site but
does not update their version numbers in Ganymede. Thus when Ganymatic
runs, it searches for the versions it has been told to search for, but
fails to find them.
- Occasionally, Ganymatic breaks when there is a legitimate version
conflict between projects, but that is fairly rare because each of the
projects is building against all of its dependencies already and thus
finding conflicts early.
- There are also bugs in my various Ganymatic batch scripts, build
scripts, web page generators, etc. That's just the curse of having more
lines of code to maintain - more lines of code = more bugs.
One solution to (2) is to use wider version ranges in Ganymede sc files
(e.g., "LATEST"), but the project teams have so far resisted doing that
because they want to have control over the exact version that Ganymatic
picks up. With that detailed control, of course, comes the
responsibility to keep that data up-to-date, but that's not happening
Jeff McAffer wrote:
all Ganymatic does is copy files, how does it fail and why is it so
to run/maintain? That is an honest question. My assumption is that
if something that fails in Ganymatic it is somehow going to fail for
users. I realize that the reverse may not be true (e.g., working in
Ganymatic does not necessarily imply it will work for the user) but
checking is better than none.
[end of message]