Tuesday, 26 February 2008

You wait all month for a release, then three come along at once

Oh poop.

Playing with the new release today I discovered the exe/dll version differ was keeping locks on any .net assemblies as it loaded the whole assembly, rather than just the name. Which is rather unacceptable so there is a new 0.2.2 release on Codeplex now. While I was there I also made it so you could drop and drag other dll/exes onto the form and it would show the version info for those.

Then I discovered that when I added the Work Items list to the History Browser I inadvertently detached the click, double click and right click events from the details list, so I've fixed that now too.

Hopefully that's it until merging, branching and renaming conflict resolution is complete.

Monday, 25 February 2008

You wait all month for a release, then two come along at once

I've just posted LizardTF.alpha.v.0.2.1

I've been using LizardTF at work where we have a big repository with lots going on, and I like to have a non-Visual Studio client - it's why I started this in the first place, and I noticed some annoying issues.

  1. Newly added repository items not yet in the local workspace weren't showing in the review/get list
  2. Conflict resolver crashed if a merge or conflict was on the last line
  3. Context menu 'Compare with...' wasn't using the exe/dll display when it should
  4. History browser didn't show associated Work Items for a change set.
  5. History button on property page was broken.

All these are fixed in 0.2.1.

I also noticed that the 'Use all mine' option in the resolver used all the local lines to resolve conflicts, but it left all the non-conflicting merges in place. I don't think this is right, but I can't fix it today.

Next up is resolving name changes and moves, and the auto-resolve options. Then, hopefully, independent merge in to a third file/location and changeset rollback.

Sunday, 24 February 2008

New Release LizardTF.alpha.v.0.2.0

Yep, that's right, I've finally published a release, here is some of what is in it:

Conflict resolution:

One spanking new merge/conflict resolution tool! Colours are a little toned down a bit since the prototype (below), but it took a while to get from prototype to production code, mainly due to the number of scenarios involved. I wanted the merge output window to show exactly what would be written out/saved, so where lines are removed these are shown only in the margins. The lines above and below the 'missing' section right-click to give 'redo above' or 'undo-merge below' options. Some lines can have both above and below options which can be for undo/redo merges or undo resolution.

Hopefully the system should be fairly intuitive to use and should be much better than the MS DiffMerge tool.

Options include:

Two diff views, diff view and merge/conflict view.
Diff view shows differences base:server (theirs) on the left and base:local (yours) on the right. Blank lines are used to keep the files in sync. In merge/conflict view all conflict areas are highlighted and all changes base:server that can/will be merged are shown merged into the right hand base:local view. Clicking between them and looking at the results is proably the best way to get a feel for this.

Context lines
Quite often there are long sections of code with no changes/conflicts, you can choose not to see them by choosing how many context lines around changes/conflicts to show

Three Layouts
Arrange the two diff views and output windows all side-by-side (good for wide screen monitors), diffs together, output beneath (like the MS DiffMerge tool), or my favorite, diffs side-by-side and output in a different window (great for twin monitor set ups)

Also :

Help Text
Don't know what all the colours mean? Hover over any coloured section and help text will explain what the section is showing.

Also new in this release a new history browser:
History on the left, full details of check-in on the right. Clink file on right to see history of that, use back button to return, or up-level button for folder history. Right click one or two versions for diff options.

Fed up with the 'Binary Files Differ' response when diffing dlls? Not with LizardTF:
(test data a little suspect, but trying to diff dlls or exes will give this screen to compare version stamps, etc)

Text diffs are like this:
(note line differnces shown beneath)
(inline diff, only three context lines).

Note the left and right folder/repo/version browse buttons. once a diff is in view you can reload either side from any file or repository item. If a repository item is loaded you can choose any historic version.

All version picker combo boxes have a 'browse' item, when selected this launches the history browser (shown above) to help you pick the right version.

Also from the explorer context menu:
Blame (anotate) shows originating changeset id/author for all lines in a source file.
Check out/lock, allows locking
Lizard Review, shows all conflicts, out-of-dates, pending changes and other checkouts for selected path
Get specific version - version combo for 'Get' option now works!

Create Workspace option asks if you want to get latest for new workspace and scans/builds Lizard meta data.

Soon I am going to have to write a manual.

Sunday, 17 February 2008

Nearly there(ish)

It's been a while but things have moved on. I keep meaning to post a new new release, then I spot some obvious issues or omissions, and put things off again.

I have now fixed the folder scanning to get the folder statuses right, which was bugging me
You can now set the lock level on (or after) check out.
There is a 'review' option which shows all conflicts, out of dates and pending changes by default.
All review options support viewing of explorer file properties from review screen
Context menu Diffs are all in place for review and history screens for working base, server latest and previous versions (all other versions can be browsed to/selected from diff window).
All version combo's support version browsing through bespoke history/detail screen.
LizardTF has it's own history display, which has integrated history panel. This also supports browsing.

The conflict resolver is nearly finished! supports resolving conflicts, undo-ing non-conflicted merges, redo-ing any merges that you have undone. Just undo-ing resolutions left to do! Hoorah!

This turned out to be rather fiddly with the undo/redo options, mainly when an operation removes all lines, and you have to mark above and below to show that something happened that can be undone, and some lines can have one operation done above, and a different one below.

To late tonight but a new release will be posted this week.