Skip to content

InfoMapper / Development Tasks / Version Control


Introduction

Version control is important for any software project in order to track changes and manage when milestone releases are made. Version control for the InfoMapper uses a feature/topic branch approach where the master branch contains the main working code and feature/topic branches are used to fix bugs or add new features. Currently, a dev branch parallel to master is not used. GitHub issues are used to track bugs and feature requests.

Stable versions of the InfoMapper are released by coordinating resolution of issues. When a version is stable on the supported platforms, all InfoMapper repositories are tagged with a tag name like InfoMapper-1.1.0 and a release is made as a software installer. In cases where bug fixes to a version are needed, a long-running branch might be created, or an incremental version along the master may be created.

Once a release is made, the version number is incremented in the assets/version.json file with a dev suffix such as 1.3.0.dev and is retained until the next release is made, at which time the dev is removed. The development version can be worked on as long as necessary. Currently, no continuous/nightly build occurs, but this may be implemented at some point, with corresponding build number.

A more sophisticated versioning workflow may be adopted in the future but currently the team is small and the workflow is correspondingly simple. Users are steered towards stable version releases.

Developer Use of Git

InfoMapper software developers are assumed to be competent with Git and GitHub. Developers should use tools that they feel comfortable with such a integrated Visual Studio Code Git features, command-line Git commands, and other tools.

Developers should help each other with Git issues such as merge conflicts and learning Git skills. More sophisticated use of Git will be implemented as time allows and developer skills are enhanced.

Git Utility Scripts

The following build-util scripts are provided in the main owf-app-infomapper-ng repository to facilitate Git use and can be run from Cygwin, Git Bash, and Linux command line. These scripts are aware of the multiple repositories that comprise the InfoMapper.

  • git-check-ng.sh - check all component repositories for status, including whether need to pull, push, etc.
  • git-clone-all-ng.sh - clone all repositories after main repository is cloned
  • git-tag-all-ng.sh - tag all repositories with consistent tag name and commit message

Issues with File Permissions

File permissions can be incorrect depending on how files are created. Git stores a single file permission bit to indicate whether a file is executable.

It is useful to use the Cygwin environment for command line operations, including running the above scripts. However, experience has shown that there are some technical issues that may need to be addressed. Using Git Bash does not have such issues, but Git Bash may not properly set file permissions on scripts.

If editors, image grabbers, etc. are run as a windows application, they can save files that when listed in Cygwin have executable permissions even if the files are not executable.

It may be necessary to use the command line to change file permissions to/from executable to compensate for permissions issues.

Developers that use only Windows development tools will not have the ability to set the execute permissions on files and therefor shell scripts will not be executable. Git Bash permissions should be OK as long as Cygwin is not mixed with Git Bash in the same repository.