Skip to content

[SCM-1029] JGit performing empty commit on CheckIn command if includes or excludes fileset is defined but no files changed in it #1251

@jira-importer

Description

@jira-importer

Markus Hoffrogge opened SCM-1029 and commented

Issue

If includes and/or excludes config is defined, then JGit checkIn is performing empty commits if no changes are applied to the effective fileset content BUT other files are changed that are NOT within the effective scope of the includes or excludes related fileset.

 

Root cause

Method JGitCheckInCommand.executeCheckInCommand is using git.status().call().{}hasUncommittedChanges(){} if there is nothing to commit returned by JGitUtils.addAllFiles(git, fileSet).

Since git.status().call().{}hasUncommittedChanges(){} returns the state of any file within the working tree of the repo, this will set doCommit true even in case there is no file changed or added in scope of the includes / excludes effective fileset.

 

Solution

Use OR condition of:
  - status.getAdded().size() > 0
  - status.getChanged().size() > 0
  - status.getRemoved() > 0

instead of status.hasUncommittedChanges() if an includes / excludes FileSet is specified.

PR #238


Affects: 2.1.0

Remote Links:

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingpriority:majorMajor loss of function

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions