diff --git a/jenkins_jobs/modules/scm.py b/jenkins_jobs/modules/scm.py
index cfed93315..a50145449 100644
--- a/jenkins_jobs/modules/scm.py
+++ b/jenkins_jobs/modules/scm.py
@@ -942,6 +942,9 @@ def repo(registry, xml_parent, data):
: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 clean-first: Remove any files that are not tracked in the repositories
+ by running the following command before anything else (default false):
+ ``repo forall -c "git clean -fdx"``
:arg bool quiet: Make repo more quiet
(default true)
:arg bool force-sync: Continue sync even if a project fails to sync
@@ -968,6 +971,7 @@ def repo(registry, xml_parent, data):
("depth", "depth", 0),
("current-branch", "currentBranch", True),
("reset-first", "resetFirst", False),
+ ("clean-first", "cleanFirst", False),
("quiet", "quiet", True),
("force-sync", "forceSync", False),
("no-tags", "noTags", False),
diff --git a/tests/macros/fixtures/scm/multi-scms002.xml b/tests/macros/fixtures/scm/multi-scms002.xml
index ba788f916..174014ca6 100644
--- a/tests/macros/fixtures/scm/multi-scms002.xml
+++ b/tests/macros/fixtures/scm/multi-scms002.xml
@@ -16,6 +16,7 @@
2
false
false
+ false
false
false
false
diff --git a/tests/scm/fixtures/repo001.xml b/tests/scm/fixtures/repo001.xml
index 93204fb3d..275375902 100644
--- a/tests/scm/fixtures/repo001.xml
+++ b/tests/scm/fixtures/repo001.xml
@@ -6,6 +6,7 @@
0
false
true
+ true
false
true
true
diff --git a/tests/scm/fixtures/repo001.yaml b/tests/scm/fixtures/repo001.yaml
index cc503c7b3..165082b66 100644
--- a/tests/scm/fixtures/repo001.yaml
+++ b/tests/scm/fixtures/repo001.yaml
@@ -13,6 +13,7 @@ scm:
jobs: 3
current-branch: false
reset-first: true
+ clean-first: true
quiet: false
force-sync: true
no-tags: true