AccuRev 7.4 is now available for download from https://supportline.microfocus.com under the Downloads button. Below is a synopsis of the release contents. The full release notes are on the download page in the AccuRev Installation and Release Notes - Version 7.4 - 31-March-2020, or at https://www.microfocus.com/documentation/accurev/74/AccuRev_Install_Release_Notes.pdf
What’s New in AccuRev Release 7.4
Highlights of new developments in AccuRev 7.4 are captured here. The following sections describe the new AccuRev Git Server, hosting of client-side triggers on the AccuRev server, how to define read-only Log entries in a schema, changes in overlap resolution, and several enhancements to the AccuRev GUI and CLI.
AccuRev Git Server
AccuRev 7.4 introduces the AccuRev Git Server, a new web application that enables developers to clone, push, and pull source code to and from AccuRev depots and streams using Git or any Git-compatible IDE or desktop application. Using the Git Server’s web interface, developers can browse for project repos, select stories to work on, and perform peer code reviews. Team leads and administrators can configure the Git Server, create new repos, view user access permissions, and read and download repo access logs. The AccuRev Git Server offers the following benefits over the AccuRev Git Client, which was introduced in release 7.2:
Requires no client-side software other than Git version 2.18 (or higher)
Supports branches and tags
Provides Git users with a full transaction history from AccuRev from the time that the AccuRev
Git Server was instantiated
Performs better than the AccuRev Git Client
The AccuRev Git Server is included in the AccuRev 7.4 full server and web server installs. No installation is required on client machines. The Git Server sits between Git users and the AccuRev server, and it interacts with AccuRev through the AccuRev Git Client. The Git Server is configurable via a web interface, and it has no dependency on triggers.
AccuRev streams are accessed using Git HTTP/S URLs. The system administrator creates a Git repo for an AccuRev stream, and then users can clone that repo. The Git Server supports task-based development using AccuRev change packages -- in both the web interface and the CLI, users can select issues to associate with push operations.
The commit history is shared between AccuRev and Git users. Commits on the master branch are pushed to the AccuRev stream corresponding to the Git repo and are visible in stream and element histories. Conversely, a fully materialized transaction history from AccuRev is visible to Git users -- the Git Server creates commits to reflect the changes inherited from upstream changes or from crosslinks. (This requires that the NOTIFICATION_LEVEL in acserver.cnf be set to 15.) The “git log” command shows the full history since the Git repo was created.
Access control over Git repos is based on AccuRev stream ACLs. Access logs, visible to Administrators in the web interface, provide an audit trail of clone, push, and pull operations.
Pulse Code Review, initially introduced in release 7.3, is also included with 7.4 full and web-only installs. It enables users to easily conduct code reviews on AccuRev issues (change packages). Code reviews are accessible through Pulse’s web interface, and also through the AccuRev GUI (AccuWork) and the AccuRev Git Server web interface. The Git Server displays the latest status of code reviews for issues in a repo’s change package
Hosting Client-Side Triggers on the AccuRev Server
AccuRev 7.4 supports hosting of client-side triggers on the AccuRev server; the triggers are downloaded to client machines at execution time. This allows administrators to manage client-side triggers at a central location on the server. Triggers can be an executable or interpreted files (Perl, Ruby, Python, BASH, bat...).
If a client-side trigger returns with an exit code of zero (0), indicating success, the AccuRev command finishes executing. If, however, the trigger fails to execute (e.g., because a required Perl module is not on the AccuRev client machine), a message stating why the trigger failed is displayed in a dialog box. A nonzero exit code causes the AccuRev command to fail.
Schema: Read-Only Log Entries in an Issue
In AccuWork, Log-type schema fields can now be configured to prevent users from editing past log entries in the field. To make a Log field’s old entries read-only, uncheck the Allow Users to Edit Existing Contents of Log checkbox for that field in AccuWork’s Schema Editor.
Eliminating Issue Dependencies and Variants Created By Merges
How the Merge Operation Has Evolved
Suppose you’ve been working on a fix for an issue and you’ve modified and kept multiple files in your workspace. However, before you can promote the files to your issue, your colleagues promote conflicting changes for other issues into the backing stream. Since your workspace files now have Overlap status, you must do a merge, combining each file’s workspace version with the parent stream’s version to create a new, merged version. After the merge, the changes in your workspace are a combination of your original changes for your bug fix and changes made to resolve overlap between the various issues. What issue(s) should you promote your merged files to?
Sometimes users have resorted to promoting against a brand new issue just to document the fact that they needed to resolve overlap. That action, unfortunately, creates new dependencies among the issues involved in the merge. AccuRev 7.3 helped to eliminate those unnecessary issue dependencies by enhancing the merge algorithm to automatically send overlap resolution to the appropriate issues. This algorithm, however, created new variants of the issues being merged. Sometimes it created variants of issues that were in the backing stream, causing issues that had been promoted to appear active again.
Release 7.4 includes a further enhancement to merge that eliminates the creation of issue variants. Whenever it is necessary to resolve overlap in the backing hierarchy, AccuRev performs what is called a rebased merge. The changes in your workspace are merged into the changes in the parent stream, and the results of the merge are kept in a new version. AccuRev keeps track of the overlap resolution details without needing to create variants for issues in the backing stream or in the workspace.
Version Browser: New Rebased Merge Ancestry Line
The Version Browser in the 7.4 GUI and the WebUI displays a rebased merge line in light gray, in contrast to a regular merge line, which is displayed in red.
A rebased merged version, which results from resolving overlap in the backing hierarchy, has:
a black Ancestor line leading to the real version that was promoted into the parent stream, and
a light gray Rebased Merge line leading to the workspace version that was merged into the parent stream’s version.
New Promote Option to Promote Unaffiliated Changes to an Issue
When you do a Promote in the 7.4 AccuRev GUI, you will see that the Select Issue (Change Package) dialog contains a new checkbox labeled "Use selected issue(s) for unaffiliated changes only". If you check that checkbox, then only the versions that have not yet been assigned to an issue will be promoted to the issue(s) you select in the dialog. Using that option helps to keep issue dependencies to a minimum.
GUI Features and Changes
Stream Diff (Issues) View Displays Only Real Issue Differences
The GUI’s Stream Diff (Issues) view (displayed by the Show Diff By Issues operation) now hides issue differences that only exist to merge or patch an issue into a new context. A variant that was created by AccuRev in order to merge/patch an issue will not be displayed as an issue difference unless more changes were added to the variant after the merge/patch. A new checkbox labeled “Show all issue variant differences” allows you to see those "merge/patch only" version differences in the Stream Diff (Issues) view if you really want to.
Stream Browser: New Expand/Collapse All Buttons
The Stream Browser in the AccuRev 7.4 GUI supports new Expand All and Collapse All operations on streams. Holding the Ctrl key down while expanding a stream (Ctrl-left-click on the stream’s ‘ ’ button) expands that stream and all of its descendant nodes so that the entire stream hierarchy rooted at that stream is visible.
Holding the Ctrl key down while collapsing a stream (Ctrl-left-click on the stream’s ‘-‘ button) collapses that stream and all of its descendant nodes. Note that if you then expand that stream by clicking ‘ ’ without holding the Ctrl key down, only the immediate child streams will become visible; each of them will still be collapsed.
URL/HTTP Links for Files
You can now send someone a link to a file by clicking on the GUI’s new Copy URL to Clipboard item in the file’s context menu. This copies the file’s URL to the system clipboard. You can then paste the URL into an email or code review request, etc. The person who clicks on the link will be prompted to login to the AccuRev WebUI; after login, the file will be displayed in whatever way the browser sees fit. The file will not be displayed in a tab of the WebUI.
GUI Log File
The GUI log file, accurev.log, is now written to the user’s .accurev profile directory so that administrator privileges are not required to write to the file.
AccuRev 7.4 supports new options for the show streams command and the include/exclude commands, and it also supports four new commands: isallowed, show allowed, show denied, and lsmarks.
show -k [(]<workspace,normal,snapshot,gated,staging,passthrough>[)] streams
To limit what kinds of streams are included in show streams output, use the new –k option with a comma separated list of the desired stream types, e.g., -k normal,snapshot. You can use spaces or tabs as separators, instead of using commas, if you surround the list of types with double quotes, e.g., -k ”normal snapshot”. To exclude specific kinds of streams from the output, surround the list with parentheses, e.g., -k (normal,snapshot) or –k (”normal snapshot”).
New “-c <comment>” option for clear, incl, incldo, excl commands
With the new –c option, you can now write an explanatory comment when you change include/exclude rules. The AccuRev GUI also provides a dialog for entering a comment with these operations.
isallowed -u <user> -s <stream> [-p <depot>]
Use the new isallowed command to check a user’s stream ACLs. The command returns 1 if the specified user is allowed to access the specified stream, and 0 otherwise.
show -s <stream> [-p <depot>] [-fx] allowed
The new show allowed command identifies the users and groups that are allowed to access the specified stream. The returned list of users and groups is fully expanded – every user that is a member of an allowed group is included in the XML output.
show -s <stream> [-p <depot>] [-fx] denied
The new show denied command identifies the users and groups that are not allowed to access the specified stream. The returned list of users and groups is fully expanded – the XML output includes every user who is (a) a member of a denied group and (b) not a member of any explicitly allowed group.
XML Command Changes
Input Request Changes
The issuediff XML input command has a new show_variant_diff attribute. If this attribute is set to ”true”, then the issuediff output includes differences that exist only because two versions were merged together. If it is set to ”false” (the default), the output excludes those differences.
Motivation for the new show_variant_diff attribute:
When a merge happens, the resulting version is technically a variant of all of the issues that were merged into the basis version. If any of those issues were already in the version history, the new version is not actually adding those issues into the stream again. By default (show_variant_diff=”false”), the AccuRev GUI does not display such variants in the issuediff result set. This makes it easier for a user to verify that all of the issues they wanted merged or patched into other streams are not “missing” from those streams.
The cpkdescribe XML input command also supports the new show_variant_diff attribute, but the attribute defaults to ”true” for cpkdescribe.
In the XML output for the hist command, if a merged version was created by AccuRev to resolve overlap, the new rebased attribute is specified, i.e., ‘<version rebased=”yes”>’. This tells the Version Browser to display the new light grey rebased-merge ancestry line for overlap resolution.