ZIGI is short for z/OS ISPF Git Interface. ZIGI creates a bridge for z/OS ISPF users that allows them to use ISPF Git. We are the creators of this tool, Henri Kuiper and Lionel B. Dyck. ZIGI began with Henri's vision, and with Lionel's significant contributions, ZIGI was shaped into the powerful z/OS ISPF Git Interface it is today. We are excited to share some recent improvements to ZIGI.
The key features of ZIGI include that it enables ISPF developers and distributed (e.g., VSCode) developers to collaborate on the same project using the same Git repository (ideally with different branches to isolate development and then use git merge when ready to integrate the changes). This enables both types of developers to work with the same code repositories using Git.
This is all made possible thanks to Rocket Software, which initially ported Git to z/OS, and to the zopen community, who also ported Git. Since Git runs in the UNIX System Services side of z/OS, there was a requirement to develop an interface from the traditional ISPF environment running under TSO to interact with Git. This enable those developers who are productive and comfortable using the ISPF environment for development to continue to develop and take advantage of the capabilities of Git.
Getting Started
To get started, there are three options available for installing Git on z/OS.
- The zopen community offers an easy-to-use installation environment to install and maintain their ports of these tools, though there is no official support for these tools at this time.
- You may already have a z/OS Systems programmer that is familiar with these tools and can support you implementing git at your mainframe shop.
Because Git does not grok z/OS datasets, all data must be copied from z/OS into files in the UNIX System Services file system where Git can access them. This copy can be performed using the native cp command, or using the getpds/putpds commands available for free, or low cost, from Dovetail Technologies in their Co:Z Toolkit. For comparison, using cp to copy approximately 1,000 PDS members from z/OS into a UNIX System Services directory can take as much time as it takes you to go brew a new cup of coffee. While using the getpds command, the copy operation is done in a few seconds. This is not an issue for portioned datasets with a small number of members, but it can be a killer for larger projects.
A word of caution, ZIGI is not intended to be a full development environment. Each developer should continue using their current development editor tool of choice (e.g., ISPF Edit, IBM FileManager, PDSEGEN, etc.). Then, when the updates have been completed using that development environment, it is time to turn to ZIGI.
ZIGI is 100% open source, so everyone can see how it works. ZIGI is written in z/OS REXX with ISPF Panels, some including ISPF Panel REXX, and using all standard system interfaces, it does not require anything additional beyond Git. It does require that the z/OS system have secure shell (SSH) network access to a Git server — either hosted by one of the cloud-based hosting services (e.g., GitHub, GitLab, Bitbucket) or hosted locally. The installation of Git I will leave to the documentation of the various Git distribution options.
What Can ZIGI Do?
The short answer is: A lot more than you think it can.
ZIGI supports 12 primary commands at the top level and 32 primary commands when in a specific repository. And that doesn’t cover the individual element selection options.
At the top level, the user can both CLONE or CREATE a Git repository — both are to be expected. The user can also have ZIGI create or review their SSH public key so that it may be copied and pasted into the user's Git server website profile. Note that ZIGI currently only supports the SSH interface to the Git server.
ZIGI insulates the user from having to know the specifics of the various Git commands and their syntax. It does this using standard ISPF dialogs while providing an escape dialog where the user can enter any Git command they wish. ZIGI also can clone, init, status, pull, push, add, commit, stash, diff, branch, checkout, log, and more with Git commands initiated by the ISPF dialog interface without the user needing to know, or care, about the command syntax.
Using the dialogs, the user can create a new repository, clone a repository, review commit histories, review Git logs, use Git diff on an individual file or the entire repository to compare to another branch, create new branches, switch branches, and more, again without having to issue any Git command directly.
It does this through ISPF dialogs and z/OS sequential and partitioned datasets while supporting files in the UNIX System Services filesystem.
When working with a repository, there are several things to understand:
- Git only works with files that reside in a UNIX System Services filesystem.
- ZIGI copies z/OS datasets, both sequential and partitioned, into the UNIX System Services filesystem.
- ZIGI supports ISPF PDS member statistics using a metafile stored in the .zigi subdirectory of the repository.
- ZIGI copies the UNIX System Services files from the filesystem into z/OS datasets, updating the ISPF PDS member statistics if required.
Why Choose ZIGI?
While you can retrain your existing z/OS developers to work with VSCode, or other IDE, on workstations and train them how to use Git, that takes time, resources, energy, and emotional energy. Most new hires will be fully versed in VSCode, or some other IDE and Git; they just need training on the applications to be developed and the processes to follow. With ZIGI, your existing z/OS developers require minimal training because they are already familiar with the IDE that they will be using — ISPF — and they are already familiar with their editor of choice that runs under ISPF.
Don’t believe something this powerful is available as open source? Just download ZIGI from either file 997 (check the updates page for the latest version) or on GitHub, and follow the simple installation instructions. Of course, you’ll also need to install Git from one of the above listed locations.
A Short Tour of the ZIGI ISPF Dialog

This is the splash screen — you can stop it from displaying using the SET command in the main repository list table display.

This is the list of all defined local repositories. In this view the repositories are sorted by the date of Last Access in descending order with a secondary sort on the Repository Name in ascending order. (Use the sort command to adjust the sort or click on the column header).
Notice that there is a menu bar at the top — click and enjoy.
Also, for those who RTFM, or in this case, RTFT (read the fine tutorials), a full ISPF Tutorial is available at nearly every location within the dialog.

Enter a / on the command line. This will bring up a pop-up menu of available commands.

And just as / on the command line will bring up a pop-up menu of available commands, so too will a / in the selection field generate a pop-up with available selection options.

This is the display for the current (selected) repository. The menu bar has many more options that are specific to the repository.

And a / on the selection field generates a pop-up with available selection options.

When selecting a PDS, a member list is displayed along with a subset of the ISPF statistics. Those columns that are underlined may be clicked to sort by that column.
NOTE: While it is possible to edit a file or PDS member using ZIGI, it is not recommended as there is more overhead in ZIGI and in using ISPF Edit or your favorite editing dialog.

And again a / in the command field generates a popup of available commands.

And a / in the selection field generates a popup of available selection options. See the tutorial for details on each.

This is a sample bl (blame) member command that issues the git blame command and displays the results.

After making the updates to the repositories and z/OS datasets, preferably outside of ZIGI, then when you open the repository in ZIGI it will automatically detect the changes and copy those updates into the OMVS filesystem where git can then process them into the repository.

This is the updated Current (local) Repository display with a Status indicator of those datasets that have been updated. Note that in this case two have a status of Untracked even though it is possible that within a PDS there may be members in a Modified state. This is because we display the status of the highest level of change.

This is an example using the diff command. If you do not enter one of the options, then you will be presented with this pop-up. We will select 1.

The git diff display will present a selection list to view the delta. Either ALL or the individual files may be selected.

Here is an example of the git diff for a member.

This is an example of a PDS display with two members showing a changed status.

To make it easy for the ISPF Git user the Commit dialog can perform the git add, the git cm mit, and the git push with one simple dialog.
Enter commit title (required) and then an optional tag along with a more extensive commit message.
Confirm that you want to do the add before doing the commit, and that you want to push the updated repository to the git server after. Then press F3:

At this point, you have one more chance to cancel the commit or to lock it in.


Lionel B. Dyck, an IBM Z Champion, has been an active open-source developer on z/OS for over four decades and has contributed dozens of tools for the z/OS ecosystem. He has also been a frequent speaker at SHARE since 1981, and while recently retired, he continues to support and develop tools for the z/OS platform while pursuing other activities.
Henri Kuiper, a certified mainframe junkie and all-round wizard of z/OS, began his tech journey by dismantling computers at a young age (BBC Micros, anyone?) and never lost his passion for taking things apart — and usually putting them back together. He serves as the technical coordinator for the Dutch region of Guide Share Europe, is an IBM Champion for z Systems, owner of zDevOps.com, and co-founder of the Mainframe Society.