diff --git a/jenkins_jobs/modules/scm.py b/jenkins_jobs/modules/scm.py
index 9733fffe3..4438635b0 100644
--- a/jenkins_jobs/modules/scm.py
+++ b/jenkins_jobs/modules/scm.py
@@ -579,6 +579,9 @@ def repo(parser, xml_parent, data):
recent commit (default 0)
:arg bool current-branch: Fetch only the current branch from the server
(default true)
+ :arg bool reset-first: Remove any commits that are not on the repositories
+ by running the following command before anything else (default false):
+ ``repo forall -c "git reset --hard"``
:arg bool quiet: Make repo more quiet
(default true)
:arg bool force-sync: Continue sync even if a project fails to sync
@@ -611,6 +614,7 @@ def repo(parser, xml_parent, data):
("jobs", 'jobs', 0),
("depth", 'depth', 0),
("current-branch", 'currentBranch', True),
+ ("reset-first", 'resetFirst', False),
("quiet", 'quiet', True),
("force-sync", 'forceSync', False),
("local-manifest", 'localManifest', ''),
diff --git a/tests/macros/fixtures/scm/multi-scms002.xml b/tests/macros/fixtures/scm/multi-scms002.xml
index ed9a70300..731abc517 100644
--- a/tests/macros/fixtures/scm/multi-scms002.xml
+++ b/tests/macros/fixtures/scm/multi-scms002.xml
@@ -21,6 +21,7 @@
3
2
false
+ false
false
false
diff --git a/tests/scm/fixtures/repo001.xml b/tests/scm/fixtures/repo001.xml
index 81bbf0dac..9cbd14d97 100644
--- a/tests/scm/fixtures/repo001.xml
+++ b/tests/scm/fixtures/repo001.xml
@@ -11,6 +11,7 @@
3
0
false
+ true
false
true
<?xml version="1.0" encoding="UTF-8"?>
diff --git a/tests/scm/fixtures/repo001.yaml b/tests/scm/fixtures/repo001.yaml
index d26687954..a34573457 100644
--- a/tests/scm/fixtures/repo001.yaml
+++ b/tests/scm/fixtures/repo001.yaml
@@ -9,6 +9,7 @@ scm:
mirror-dir: ~/git/project/
jobs: 3
current-branch: false
+ reset-first: true
quiet: false
force-sync: true
local-manifest: |