I DO experience the problem too but, after suffering through it a few times, I can now fix the problems pretty quickly when it happens. BTW, problems like this should be expected to happen fairly frequently because the project is still, I believe, at the "alpha" stage.
Originally Posted by jfcone
Anyway, here are some tips on how to fix them when they arise:
1) First, I assume you're probably using a CVS client like WinCVS. Unfortunately, I don't really like the built in differencing tool (except for creating patch files). Therefore, I recommend that get a decent visual differencing tool and hook it up to WinCVS -- see the WinCVS Preferences dialog. The tool I use is Beyond Compare (http://www.scootersoftware.com/). I highly recommend it as it is by far the best I have used. If you get it, I recommend you check out the "Align Manually" and "Ignore Unimportant Differences" features as they are very handy for fixing the type of problems you are experiencing. Beyond Compare is NOT free but it is VERY cheap and WELL worth the small price.
2) Once you have a build that works, the next time you update from CVS, make sure you keep track of all the files that changed since the last time you updated from CVS. The changed files appear in the WinCVS log window at the bottom of WinCVS. By keeping track of which files changed, you can save a lot of time when looking for the cause of build breakage.
3) Learn how to use WinCVS' "Graph Selection" feature, which allows you to see a "graph view" of the version history for a particular file.
4) Use the graph view to see the "check-in" comments attached to each file version. Simply click on a version number to see its comments.
5) Use the graph view to launch a "diff selected" operation between two versions of a file.
6) Check out WinCVS' "Query Update" feature, which allows you to see what has changed in CVS without actually copying the files to your local computer. It allows you to see what changes might break your build without actually breaking your build.
As manifoldronin suggested, I usually look how Petclinic has changed since the last time my build worked (see tip 2 above). Once I figure out which files in Petclinic have changed, I graph the version of each file (see tip 3 above). Next I click on the version nodes of any versions that are newer than my local copy to read the check-in comments to see what they reveal (see tip 4 above). If a comment looks like it might explain the breakage, I do a diff between that version and the version of my local copy (see tip 5, above). By this time, you will usually have an idea of why your build is broken. Usually the fix involves copying the same diff in a Petclinic file to a corresponding file in your application.
I think I remember having the same problem last week. Using the above tips, I quickly resolved the breakage in my app. First, I figured out that "PetClinicApplicationAdvisor.java" had changed since my last good build (tip 2). Next, I graphed that file (tip 3). From the graph, I clicked on the new version to get its check-in comment (tip 4), which (if memory serves me correctly) revealed that BeanFactoryApplicationAdvisor had been renamed to DefaultApplicationLifecycleAdvisor or something like that. Next, I did a diff between that version and the current version on my local computer to see what the exact change was (tip 5). Finally, I copied the change to the file in my app (i.e. "MyApplicationAdvisor.java") that corresponds to "PetClinicApplicationAdvisor.java".
Originally Posted by jfcone
When "copying diffs" you can either do it manually (i.e. copy and paste) or you can use Beyond Compare's "Copy to other side" feature. For example, I loaded "MyApplicationAdvisor.java" on one side and "PetClinicApplicationAdvisor.java" on the other side in Beyond Compare. Then I used the "Align Manually" feature to line up corresponding sections of code on both sides (not always necessary). Then I selected the change in "PetClinicApplicationAdvisor.java" and clicked "copy to other side".
I hope these tips are helpful to you.
"All your bean are belong to us" - Spring Framework's IOC Container