Monday, July 28, 2008
QVCS/QVCS-Pro 3.10.18 Release now available
I just posted the QVCS/QVCS-Pro 3.10.18 release. Details are available here .
Sunday, July 20, 2008
Refresh coming for QVCS/QVCS-Pro
I'm putting the finishing touches on a minor refresh for QVCS/QVCS-Pro. The scheduled release date is July 28.
This release will add a feature to the qmodhdr command line utility so you can add users to a file's access list, even in the case where you are not currently on that file's access list. This will make administering the access list a bit easier, as it can now be a real nuisance to add users to the access list of a large project when there is no single user who is guaranteed to be already on the access list of all the files in the project.
Another new feature will be support for a new kind of file filter -- 'Label contains string'. This file filter will allow you to define a string that must be contained within a label that has been applied to a file. It any of a file's labels contain the given string, it will pass the filter; if the file has no labels containing the filter's string, then the file will not pass the filter.
The third new feature an added file menu option that allows you to view the selected file as text, instead of viewing it using the default application associated with the file's file extension.
Coding is pretty much wrapped up, with just minor documentation changes yet to be made. If you have some other minor change that you'd like to see, please let me know.
Tuesday, January 29, 2008
QVCS/QVCS-Pro 3.10.17 released
I just posted the 3.10.17 build. It fixes a minor problem in keyword expansion of the $Log$ keyword in the case where the revision comment is longer than the wordwrap column and there are no preceeding spaces in the comment. This is something that was partially fixed in 3.10.16, but I missed some boundary cases in that build that are now fixed in this latest effort.
Enjoy.
Monday, January 21, 2008
QVCS/QVCS-Pro 3.10.16 Released
I just posted the 3.10.16 release. It's got the changes noted in the immediately preceeding blog entry. Enjoy. Please let me know if you run into any problems.
Thursday, January 10, 2008
WIP -- Next QVCS/QVCS-Pro Release coming soon
I've been making progress on the next QVCS/QVCS-Pro release, and have tentatively scheduled its release for the end of this month.
So far, I've got the following changes coded and tested:
- QVCS/QVCS-Pro user names are now case insensitive.
- QVCS/QVCS-Pro now tracks the timestamp of a checkout or lock and displays that timestamp in a new column in QWin.
- You can now define what column QVCS/QVCS-Pro will use for wordwrap when formatting revision comments for keyword expansion and for display in the 'Revision Information' pane. This wordwrap value is used when the revision comment is created at checkin time, or when the revision comment is editted.
- Added a 'Force Branch' to user preferences so the user can define the default state of the 'Force Branch' checkbox for the checkin dialog.
- Disabled the 'New Project' menu option if the menu is used within an existing project. Disabled the 'New Project' menu option if the menu is used within an existing project.
There are a few other minor changes that will make it in as well... If you have an itch that needs to be scratched, please let me know soon.
Friday, April 13, 2007
Stricter QVCS forum access
If you want posting access the QVCS support forums (http://qumasoft.ipbhost.com/ ), you'll need to jump through more hoops than in the past (Users who are already forum members won't see any change). For reasons that defy my understanding, QVCS support forums have undergone a sustained spam attack from folks who either want to waste my time (which may be their intent), or have some wild misunderstanding of what kind of message traffic I will allow to appear on a Quma support forum.
If you want to become a forum member, please drop me an e-mail (jimv at qumasoft dot com) as forewarning so I can let your membership application go through. If you are a registered user of any QVCS product, you'll just need to provide your registration ID. If you are not a registered user (why not?), then I'll be happy to let you on the forum if you can persuade me that you are not a bleep bleep spammer.
Tuesday, February 20, 2007
QVCS-Enterprise 2.0.18, and new box shots
QVCS-Enterprise 2.0.18 is available. You can find more details here. It's been out for a while, but I've only now gotten around to annoucing here on the blog... sorry for the delay, but I've been preoccupied with work on QVCS-Enterprise 2.1, and a short-term consulting gig that I've taken on.
Along the way, to the 2.1 release, I want to dress up the web site a bit, and to that end, a first step is to create some cooler graphics that I can use to represent the 3 QVCS products. I've always liked web sites that show their software products in 'box shots', even though the product is sold electronically... so I began to play around with a tool that would help generate nicely shaded box-shot pictures for the QVCS product line.
In a web search, I found an affordable, and simple to use product called (appropriately enough) Box Shot 3D. The only problem with using this product is that you have to have some artistic talent to create the images that it uses for the front and side of the box.... so I asked my daughter to put together something, and was major league pleased with the results:
How cool is that?
Hopefully, customers will understand that they'll never actually receive a box containing software...
These new box shots will be part of the new look to the web site -- and though it will be a while before the web site update actually happens, I couldn't resist showing these off.
Friday, December 08, 2006
QVCS/QVCS-Pro 3.10.15 build available
I just posted the QVCS/QVCS-Pro 3.10.15 build. It is a bug fix build only. Details are available here. It is a free update to users whose license is less than one year old.
Monday, November 06, 2006
Visual Compare for .doc files and spreadsheets
QVCS can version control anything that's stored in a file -- including binary files. Performing a visual compare on binary files, however, is usually worthless unless you use a visual compare tool that is 'aware' of the file format for the given binary file type. For some of the popular binary file formats, these kinds of visual compare tools exist. For example, you can use a tool from Zizasoft to perform visual compares of Microsoft Word documents. Alternately, you could use a tool from Formula Software to compare different revisions of an Excel spreadsheet (See our resources page for some other alternatives).
Suppose you want to be able to use these tools, and still use a vanilla visual compare utility for the rest of your files? Can that be done? Yes... but you have to use a batch file so that different file extensions will launch different file compare utilities. For QVCS and QVCS-Pro, you need to create a batch file that looks something like this:
IF %~x1==.DOC goto docFiles
IF %~x1==.doc goto docFiles
IF
%~x1==.XLS goto xlsFiles
IF %~x1==.xls goto xlsFiles
:otherFiles
"C:\qvcsbin\ExamDiff.exe"
"%1" "%2"
goto end
:docFiles
cd
"C:\Program Files\Zizasoft\zsComparePro"
zsComparePro.exe
'/leftFile:%1' '/rightFile:%2' /fileOptions:"By Character" /noSplash
goto
end
:xlsFiles
cd "C:\Program Files\Excel Compare"
xlsc.exe
"%1" "%2" /allSheets
goto end
:end
In QWin3, you would then select the Admin/Preferences... menu, and on the Utilities tab, enter the path to the batch file so that it looks something like:
C:\qvcsbinTest\myCompare.bat "%s" "%s"
For QVCS-Enterprise, you can do something similar. You can use the same batch file described above. To get the QVCS-Enterprise client to use this instead of the built-in visual file compare, you need to start the client, select the Admin/User Preferences... menu option, and on the Utilities tab, enable the 'Use External Visual Compare Tool'. In the associated edit box, you need to enter a command line that looks like:
C:\qvcsbin\myCompare.bat file1Name file2Name
Tuesday, September 19, 2006
IDE Integration tip
I had a tech-support issue come up the other day related to getting IDE integration to work. In sorting through the issue, it turns out that neither QVCS-Pro nor QVCS-Enterprise is very friendly to the non-admin user.... i.e. they both need admin rights to make the necessary registry changes that are required by Microsoft's SCC IDE integration.
Since I'm an admin user on all my machines, it's not a problem I've ever run into. I guess it also goes without saying that neither am I a Windows admin guru. We came up with a successful workaround, and I'll be creating a FAQ on the solution as soon as I can put the pieces together into a coherent presentation.
In the meanwhile, if you are a non-admin user who has given up on getting IDE integration to work, the basic problem can be solved by changing the rights on two hives in the registry.
What you have to do is described nicely by this article (for a product completely unrelated to QVCS or QVCS-Enterprise). Instead of the BSI hive (described in the linked article), you would need to modify the SourceCodeControlProvider hive and the QumaSoftware hive in the same registry tree as described in the article.
Friday, August 04, 2006
Updates galore
This past week, I've posted updates for both QVCS-Enterprise (1.2.13) and QVCS/QVCS-Pro (3.10.12).
Both of these updates are bug fix releases.
In the case of QVCS-Enterprise, the new build fixes a problem that shows up when you have users who have different ways of capitalizing the name of the same file. For example, if user A has a file named foobar.java and user B has a file named FooBar.java, QVCS-Enterprise will normally see these as different files. If, however, you have enabled the 'ignore case' project level setting, QVCS-Enterprise is supposed to treat them as if they were the same file. The 1.2.13 release makes it so it finally does treat them as the same file.
So why does QVCS-Enterprise even allow foobar.java and FooBar.java to be considered as separate files. The simple answer is that in *NIX environments, the file system treats foobar.java to be different than FooBar.java. Since QVCS-Enterprise is cross-platform, it should support this scenario. Admittedly, this should be the rare case, but in software, it's often the boundary cases that drive both requirements and design choices.
In the upcoming 2.0 QVCS-Enterprise release, new projects will have the 'ignore case' setting enabled by default. Note that with the current 1.2.13 release, if you change the 'ignore case' project setting, you'll need to restart the server in order for the change to take effect.
The 3.10.12 release of QVCS/QVCS-Pro is strictly a bug fix release -- it fixes a problem with the 'login as' feature.
You can get the bits for the latest stuff from here.
Tuesday, July 18, 2006
QVCS and QVCS-Pro 3.10.11 Release Now Available
I posted the 3.10.11 release late yesterday. It's a bug fix release. You can download it from the usual location.
The bug it addresses is a little obscure -- but if you meet the conditions of the bug, it can be a real nuisance. The bug will appear if you create a branched revision on a file and you change the default branch of that file to be something other than the TRUNK.
The symptoms of the bug: QWin will not start up -- it will exit at startup, complaining of an unknown exception in QWin4.cpp at line 614. You can sometimes workaround the bug by rebuilding the cache file -- i.e. manually delete the Q$QCache file located in the archive directory.
The bug was caused by some bad serialization code in reading and writing to the cache. That code only got used in the case where a file's default branch was set to something other than the TRUNK.
I wrote the original code a long time ago (back in 1999) based on some code that dates back to 1995. That original C++ code was based on some C code that dates back to the origins of QVCS on the Amiga (say back in 1991). Back then, the idioms I was using for structured file I/O were C style idioms. The bug came about because I began to change to C++ idioms for file I/O but neglected to change the code that still relied on C style idioms for some of the low level I/O.
I guess one lesson from this is that while C and C++ can co-exist, their respective coding idioms do not -- at least not without more care than is built into the respective languages.
Oops.
Monday, May 29, 2006
QVCS and QVCS-Pro 3.10.10 Release Now Available
I just posted the 3.10.10 build.
This release is primarily a bug fix build, though it does have one minor new feature. Here's a list of fixes:
- I made some changes to the archive writing code so that it has a better chance of success when writing very large files to network shares. I've tested with files over 200 Megabyte in size, and things work as expected.
- File status is now refreshed automatically in the case where a user attempts to perform an operation that is not allowed. For example, suppose user A checks out a file, and then user B attempts to check out that same file. Ideally, before attempting the checkout, user B types F5 to refresh file status and the checkout attempt would have been prevented -- but in the common circumstance, that will not be the case, and user B's checkout request will fail. Before this fix, user B had to manually type the F5 key after the checkout failed in order to the file list panel would show that user A had checked out the file. After this fix, that refresh is done automatically.
- The status message area is now cleared after a 2 second delay.
The one new feature:
- You can now launch Windows Explorer from the file menu and the popup file menu. The copy of Explorer will open up to the directory containing the selected workfile, and that file will be selected. The menu option is only enabled if the workfile exists.
This is a free update for users who have purchased or renewed within the past year. Other users will have to update their license.
Wednesday, May 24, 2006
Keeping busy
Busy, busy, busy.
How many balls can you keep in the air at a time?
I'm writing this from my hotel room. I'm on a short term consulting gig for my former employer. I didn't burn any bridges there when I left to work on Quma full-time last year, and thought I could help them out. The consulting is interesting enough, but it's keeping me busy during the day -- so QVCS work slides back to the evenings where it lived for many, many years.
As a consequence of the consulting work, it looks like the release date for QVCS-Enterprise 2.0 will push off until late summer or early fall. As I've noted earlier, the big new feature in Enterprise 2.0 will be support for Microsoft's SCC IDE integration. I've made some good progress with it over the past several months, and have it far enough along that I can self-host its development: check-outs, check-ins, revision history, visual compare, and revision compare all work like they do in QVCS-Pro. I still have a few more functions to implement, and have to add PowerBuilder support (which should be pretty easy). I'm shooting to have an early beta ready in several weeks. This will be a beta without installer support -- you'll have to manually muck around in the registry to get things set up so an IDE will 'know' about QVCS-Enterprise, but ... the functionality is there, and I need to get some other folks working with it to identify areas that still need some polish, and to help find any bugs.
On the QVCS/QVCS-Pro front, I'll publish a bug-fix release at the end of this month. There are a few relatively minor bugs addressed in this next build. Chief among them is improved support for very large files. I had a user a while back who was having trouble getting QVCS to work with very large files (>50 Megabytes)... things would work fine if everything was done on one machine, but as soon as he tried to get things to work with a file server over the LAN, things would fall apart. More recently, another user has run into this same behavior, and this time, I've been able to duplicate the problem.... and fix it. The code change breaks up the writes into smaller chunks instead of attempting to write the entire gazillion bytes in a single write. I would have thought that the underlying runtime libraries would have handling this kind of chunking, but apparently not.
Monday, May 01, 2006
QVCS and QVCS-Pro 3.10.8 available
Over the weekend, I posted the 3.10.8 release. This is a bug-fix release only that addresses two problems:
- The rename bug noted earlier
- A problem with the qstamp command line utility: the -duplabel feature did not work correctly.
The duplicate label feature did work okay in the GUI -- it was only broken in the qstamp command line utility.
You can download the bits from the usual location.
Monday, April 17, 2006
QVCS/QVCS-Pro Rename bug
Several users have reported a problem where navigation updates to the Revision Info pane (and the File Info, and Revision Detail pane also) stop. I had never been able to duplicate the bug, so it didn't get fixed. Well, now a user (thanks Phil K.!) has tracked the problem down to rename attempts. As it turns out, any kind of rename will cause the update lockup. The simplest workaround is to exit QWin and restart. The rename function works as expected, it just has the unintended side effect of locking out updates to the detail panes at the bottom right of the screen. Oops. I've already fixed the code, and will publish a 3.10.8 release at the end of the month.
Friday, March 31, 2006
QVCS/QVCS-Pro 3.10.7 Release Now Available
I just posted the QVCS/QVCS-Pro 3.10.7 release. The bits are the same as the candidate build I posted earlier this week. You can download the latest release here.
Tuesday, March 28, 2006
Early bird special; MFC CSocket advice
I just uploaded the likely bits for the upcoming 3.10.7 release. The official release date is this Friday; but you can get the bits early here. I say likely, because I don't expect to make any additional changes to the code between now and Friday -- unless there are some late bug reports.
Things have been quiet on the blog because I've been preoccupied -- coding away on both the 3.10.7 release and the 2.0.x Enterprise release. As noted above, the bits for 3.10.7 are now stable. 2.0.x Enterprise is a completely different story.
The big feature for 2.0.x Enterprise is be the addition of support for Microsoft SCC IDE integration (like QVCS-Pro). To implement this, I've been writing the IDE client piece in C++, and making the corresponding transport changes in Java for the server code. Along the way, I implemented socket code on the client to communicate with the server, just like the existing Java client. One of the twists that requires server changes is that I can't use Java Serialization on the C++ side for object serialization, since I don't have a JVM on the client. This means writing a serialization layer on both server and client to push the bits back and forth. The result is a better use of bandwidth, at the expense of writing and maintaining the serialization code.
Since QVCS and QVCS-Pro are MFC based C++ applications, I figured I'd write the client SCC .dll as an MFC based .dll Since I had to do socket communications between the MFC C++ client and the Java server, I figured I'd use an MFC supplied socket class. As it turns out, that was a mistake that cost me several days of frustration: I tried to use the MFC CSocket class, since it seemed to be a closer fit to what I needed. For whatever reason -- it was not a good use of my time to try to debug what was going on -- the CSocket class really did not fit the threading model that I needed to support. There must be some scenarios where CSocket can work, but it was not reliable at all in the way that I was trying to use it. The Microsoft docs were not helpful in pointing out the limitations of the CSocket class -- for that I had to rely on dribs and drabs of complaints that I found via Google search.
In the end, I punted, and wrote my own socket class that wraps the Windows socket API's, based on some sample code I found on the Internet. It works well, and is actually very simple. My guess is that almost everyone else who has to write socket code in an MFC environment goes through a similar two days of agony, and then does the same thing that I did. The result is more reliable with well defined behavior than the MFC supplied alternatives.
The bottom line advice -- if you are thinking of using the MFC CSocket class for anything useful, think again.
Thursday, March 09, 2006
3.10.7 Build at end of March
I'll release a 3.10.7 build at the end of March. This is a bug fix release/minor change release. So far, it addresses a couple of issues:
- The blinking of the toolbar filter indicator will become a user preference... meaning you can turn the blinking off if you like. The default will be for the blinking to be turned off. You set your preference via the Admin/Preferences... dialog.
- Fix a bug in the get dialog so that the presence of the overwrite dialog won't hold the lock on the associated archive file.
- Fix bug in Login As... implementation so that it works correctly. I broke this in the 3.9.25 build.
- A small usability improvement: the checkin dialog becomes resizable.
The changes above have already been coded and tested. I'm just holding off on the release pending any other bug reports.
UPDATE: Added mention of the Login As... bug fix.
Tuesday, February 28, 2006
QVCS-Pro and QVCS 3.10.6 Now Available
I just the 3.10.6 release.
As I've noted before, the main point of this release is to add support for .dll based triggers. Testing has confirmed that performance is pretty good... generally much better performance than you get using .exe based triggers.
There are a few other goodies in there. The one I like the most is the change to the way checkout comments are handled. In previous releases, you could enter a comment at checkout time, and that comment would become the default comment at checkin time. The problem with the old implementation is that no one could see what your checkout comment was. It was a secret. The new implementation makes your checkout comment visible to everyone. This makes it much easier to include some note in your checkout comment that others will find useful -- like explaining why you have checked out a given revision.
The other big 'under-the-hood' change in this release is a change to the way cache locking works. The new locking scheme is compatible with the 3.9 cache locking scheme, but adds the ability to determine whether a cache lock is a read-only lock or not. The great thing about read-only cache locks is that there can be multiple lockers -- which means there can be many concurrent 'readers' of the cache. This should greatly reduce the number of cache collisions for larger teams. This doesn't make cache collisions go away -- it just makes them less likely.
You can get the bits from the usual locations: here or here.