Git 1.7.1 is Not Supported by Stash

Troubleshooting Installation

On this page

Still need help?

The Atlassian Community is here for you.

Ask the community

Symptoms

When trying to install Stash on a Linux based server, the following error message is reported:

The minimum supported version of git is 1.7.6. You are using 1.7.1. Upgrade git and restart Stash to enable git support.

Diagnosis

Stash requires atleast Git 1.7.6, but Linux systems come with Git 1.7.1 pre-installed.

Cause

 

Stash relies very heavily on the command line options to git commands (such as git log, git ls-tree, etc) and on the git client for handling them. To help avoid exposing bugs in the git client as bugs in Stash, Stash cannot support earlier versions of Git. Doing so would add considerable maintenance overhead for the product, as well as provide differing levels of quality to the product.

Git is not versioned like other software. As compared to Stash for example; Stash 2.6.2 did not introduce any new features that 2.6.0 did not have. That's a very common approach; patch releases are supposed to contain bugfixes and their APIs and features should allow for both backwards and forwards compatibility (meaning if a customer installed 2.6.2 and then downgraded to 2.6.1, everything that worked in 2.6.2 should continue to work).
In git, that is not how versions work. "Patch" releases in git are for the fourth digit, not the third. 1.7.6.5 was the fifth patch release for 1.7.6, but 1.7.6 was a feature-bearing release just as much as 1.7.0 was. It may also be worth noting that there seems to be no specific driver for deciding whether to release 1.8.5 instead of 1.9.0. Hence there are significant differences in the functionality between Git 1.7.1 and 1.7.6.
As a result of this, many aspects of Stash's functionality don't work with older versions of Git. Based on that, the primary thing that is missing is git rev-list --ignore-missing. Stash relies on --ignore-missing on nearly every rev-list call it makes. That flag makes git rev-list continue processing when a changeset is requested that is not in the repository. This feature is required for indexing, pull request rescoping (forks), changeset details, changesets between and other features.
Apart from this, based on our tests, conflict resolution to display conflict markers in pull requests is also broken on 1.7.1 for directory/file, add/rename and rename/add conflicts.

Resolution

 

Here are some resources for installing Git 1.7.6 on a Linux server:

 

Last modified on Nov 2, 2018

Was this helpful?

Yes
No
Provide feedback about this article
Powered by Confluence and Scroll Viewport.