CodeCollaborator Frequently Asked Questions
CodeCollaborator also comes with integrations for 3rd party tools such as Perforce and Eclipse. You can also access reports and the back-end data model using our XML-RPC Web Services or the command-line client.
Please see Moving Parts for details on all these components.
- Rule-Based Workflow: Automatically adjust workflow based on development groups, software code sets, and geographic location. For example, you might have rules where developers get reviewed by team-leads, or where the owners of code modules are always invited to the review.
- RSS Feeds: Receive notifications by RSS feed instead of just by e-mail. Configure how and when to receive notifications of different types.
- Entry/Exit Criteria (Checklists): Checklist of things to be done before a review starts or before a review can be completed. Whole-review and per-file checklist items. File type-based checklists.
- Cross-Tool Reporting: Integrating reports with data from issue-tracking and version control. View efficiencies, kLOC rates, and injection rates across the entire development process.
- Cross-Platform FAT Client: Do anything from a cross-platform FAT client for users who prefer the speed and interface of a local GUI client over the no-install convenience of a web-based interface.
- Off-Line Reviews: Ability review code when not connected to a network.
- Binary File Support: View diff's and comment on binary files like images, Microsoft Office documents, and PDF's.
- Reviewer Pools: Ability to make a rule like "two of these seven developers must review the code."
- Tighter Issue-Tracker Integration: Specific support for popular systems like TeamTrack, JIRA, FogBUGZ, and Mozilla.
You can use the embedded database option in the installer to save time, or you can set up your database now. You can always switch to a real database later and take all your data with you.
The trial is only limited by time; you can use all the features of the software from the on-line downloads.
Please let us know if we can assist you in installing and configuring your trial software.
You may also download and install a free trial on your own machine.
You will use CodeCollaborator from a server we host here at Smart Bear. The reasons we offer this free server only as a hosted service are: (1) reduced support costs for us by hosting only the latest stable release; (2) usage information that helps us understand how people use the software; (3) acts as a continuous scalability test that we can monitor; (4) allows us to track the number of projects, users, files, etc. which we can then brag about.
This service should be starting in late Jan or early Feb 2007. Let us know if you're interested so we can drop you a line when it's ready.
All Smart Bear pricing is published on-line, so there are never any surprises.
There is no additional charge for the server itself, and there is no limit on the number of different servers you can have installed at once. There is no additional charge for the various component software that make up CodeCollaborator.
We do offer Smart Bear Gold Support for an additional fee. Please see that link for details on what this entails.
Contact us for details.
Trial installations can easily share space with other server processes and are often installed on workstation machines.
We can also host your installation on our servers, either for trials or for production use.
For production installations serving 50 users or more, or for distributed installations, contact us so we can give you a recommendation for your particular set-up.
> bash ./ccollab_server_1_0_345_unix.sh
Or, you may not have Java installed. If that's the case, please go to the following website and download and install the J2SE v1.5 JRE: http://java.sun.com/j2se/1.5.0/download.html
If you do have Java installed, our installer might not be finding it. To fix that problem, you can use the
$INSTALL4J_JAVA_HOME_OVERRIDE
environment variable or one of the standard java environment variables (like $JAVA_HOME or $JDK_HOME) to tell the installer
where that path is, but if you have it installed in a standard place and we're not finding it please let us know — we'd like to fix the installer.
This works because the web server stores all information and state in the database and caches "this user is logged in" with cookies in the user's browser (which is then transmitted to the web server on every connection). This even works with our client software and libraries because we use Web Services for all communication.
The database back-end can also be replicated. Consult the documentation for your particular database for details.
- Shut down: The installer is supposed to shut down the CodeCollaborator server before updating any of the files. However, very infrequently, for reasons we have not yet been able to diagnose, the server fails to shut down. Therefore, shutting down the server before upgrading is probably a good idea.
- Backups: As with all mission critical software, we recommend regular backups, but this
becomes even more critical before an upgrade, as unfortunately sometimes things
go wrong. In particular, we recommend backing up your database, the configuration
directories, and the "content cache" where we store the files that are being
reviewed.
- Database backups. To back up the MySQL database, use the mysqldump utility:
mysqldump --database {database name} -u {username} -p > collaborator_backup.sqlThis will create a file which can be used to restore your database should any database migration fail. Zip up the contents of the file and store it in a safe place. - Configuration files. All of the configuration that is not stored in the
database resides in the
{installation directory}/tomcat/confdirectory. Make a zip or tar file of this directory and store it in a safe place. - Content Cache. As of CodeCollaborator version 1.0 build 400, the content
cache directory is
{installation directory}/tomcat/collaborator-content-cache. In earlier versions, the content cache resided at{installation directory}/tomcat/webapps/ccollab/content-cache. Locate your content cache and make a zip or tar file of it and store it in a safe place.
- Database backups. To back up the MySQL database, use the mysqldump utility:
- That's it: Run the installer and follow the steps in the wizard. The wizard is designed to prepopulate the wizard forms with your current configuration. You should not need to change anything unless you are intentionally moving to a new configuration.
With installs your script should also lay down a configuration file for each user that tells the client software the location of your CodeCollaborator server and the username/password to use to connect.
If you don't do this your users will not be able to use the client software until they set up that configuration. For upgrades this is not an issue.
We have
mod_proxy and mod_rewrite to
have Apache proxy the web connection. Here's an example Apache configuration that hides
a server running on port 5555 behind a virtual server called example.codecollab.com:
<VirtualHost *:80>
ServerName example.codecollab.com
RewriteEngine on
RewriteRule ^/$ http://localhost:5555/index.jsp [P,L]
RewriteRule ^/(.+)$ http://localhost:5555/$1 [P]
ProxyPassReverse / http://localhost:5555/
</VirtualHost>
For details, see the Apache user's manual for
mod_proxy
and mod_rewrite.
The more complicated but more efficient way is to use the Tomcat/Apache connector module that lets Apache talk directly to a Tomcat server (which is what we use for our web server). See that link for details.
For Code Collaborator 2.0 and later, the changes also must be made to the
server.xml
located in <install-directory>/tomcat/conf. Specifically, the Connector
element needs the following attributes:
proxyName: The hostname of the proxy server.
proxyPort: The port number to access on the proxy.
For example, using the
VirtualHost definition above, the proxyName
attribute would be set to example.codecollab.com and the proxyPort
attribute would be set to 80.
For more information on configuring the Tomcat HTTP connector, see the Tomcat Server Configuration Reference.
When user names are shared, developers don't have to remember yet another user name/password pair for code review. Also CodeCollaborator can automatically match up version control users with review users to pre-populate forms, create reports, and generally save time.
In Code Collaborator, you can still have checklists, they're just not built into the system. There are two ways people do this:
- Have a "checklist URL" custom field in the review summary. The review creator uses this to link in checklists from an intranet. The reviewers can click that link to pull up the checklist and either print it out or place it on their screen(s) in a visible location.
- Upload the checklist(s) to the review as regular documents. The reviewers similarly can open those files on-screen and/or print them out.
- Different file types need different checklists. E.g. Java source code, C++ makefiles, and requirements documents need completely different checklist items.
- Actually ticking off each box is tedious.
- How does the list fit on the screen with the rest of the interface? Depends on your monitors, whether you like print-outs, etc..
- Developer A starts working on local changelist 100
- Developer B starts working on local changelist 101
- Developer B checks in 101
- Developer A checks in 100; but because this would result in changelist-order not being the same as time-order, Perforce renumbers 100 -> 102 and checks in as 102. Meanwhile changelist 100 "no longer exists" as far as Perforce is concerned.
We will be "fixing" this in a future version of CodeCollaborator with a Perforce server-side trigger that will update the CodeCollaborator database when this happens.
To make things easier for reviewers to track, CodeCollaborator only displays the most recent changes and hides the rest under the link "Show previously-uploaded changelists". If in the latest upload there are no files in common with the previous upload, both are shown. This allows an author to upload additional changes which are relevant to a review, but were not included in the initial upload. If, however, there are files are in common between two sets of changes, only the most recent is displayed. This is because CodeCollaborator has no way to tell if the author reverted the files not included in the upload or just chose not to upload them. This is why the recommended approach is to upload all the files regardless of whether they were reworked.
For Perforce users this should not be an issue. Perforce changelists always contain all the changed files.
(?:19|20)\d\d-(?:0[1-9]|1[012])-(?:0[1-9]|[12][0-9]|3[01])
The following regular expresion validates a time on a 24 hour clock:
(?:[01][0-9]|2[0-3]):[0-5][0-9]
The two could be combined to accept a date and time field. Be sure you set the description of the field to describe exactly the format you're looking for so that users do not have to parse the regular expression to know what to enter.
Typically you do not want the CodeCollaborator conversations in the code as comments because people ask questions, debate things, get confused, etc., and putting 100% of that in the code is probably even more confusing. Better is to update the comments in the code AFTER the review, once you decide what the "right thing" is, and when you can make that concise.
- ASP
- C
- C++
- C#
- CSS
- HTML
- Java
- Javascript
- JSP
- Perl
- PHP
- SGML
- Shell Scripts
- XML
ccollab-server.vmoptions file in the server installation directory:
-Dhttp.proxyHost=proxy_hostname
-Dhttp.proxyPort=proxy_port
-Dhttp.proxySet=true
Some newer firewalls have been known to create additional problems with services,
such as CodeCollaborator accessing the Internet via HTTP. For instance, some firewalls
periodically return a web page to verify that a human is actually using a browser.
If this is the case, contact your network administrator to request an exemption
from this policy for CodeCollaborator.
installation-directory/tomcat/logs/tomcat.log
for error messages which might indicate why the server could not start. If another
webserver is running on the same server machine, there may be a port conflict. Use
the installer to configure the webserver to use another
port. If you need assistance interpreting an error message you find in the log,
send a copy of the log to Customer Support.
If the issue is confined to a single client, this usually means the problem is due to a misconfiguration of that client. Double check the URL you have configured to ensure that it refers to the CodeCollaborator server. Use a web browser on the client machine to access CodeCollaborator to confirm that the network is working between the client and server. If the website is also unavailable, there may be a network issue preventing the client from accessing the server.
installation-directory/tomcat/conf/Catalina/localhost/context.xml:
<Valve className="org.apache.catalina.valves.AccessLogValve" pattern="common" resolveHosts="false" />
After changing the configuration, you will need to restart the CodeCollaborator server.
After the restart, the access log will appear in installation-directory/tomcat/logs.
