diff --git a/requirements-cli.txt b/requirements-cli.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f58c0c8bf39fc7ae9208e241cecc451265b321e2
--- /dev/null
+++ b/requirements-cli.txt
@@ -0,0 +1,2 @@
+Click
+dulwich
diff --git a/requirements-test.txt b/requirements-test.txt
index e079f8a6038dd2dc8512967540f96ee0de172067..916a7bb3d8da141daa0f1de10ab2926b41ad2e54 100644
--- a/requirements-test.txt
+++ b/requirements-test.txt
@@ -1 +1,3 @@
+Click
+dulwich
 pytest
diff --git a/requirements.txt b/requirements.txt
index 236db633091191d4fef2655c73b4425beef70ec8..98825fa3ef8c1821335b73ab07e581747024d346 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -2,8 +2,6 @@
 # should match https://pypi.python.org/pypi names. For the full spec or
 # dependency lines, see https://pip.readthedocs.org/en/1.1/requirements.html
 vcversioner
-Click
 attrs
 hypothesis
 python-dateutil
-dulwich
diff --git a/setup.py b/setup.py
index 5604841510d2a03557c1487c1b74c811158347a8..6f2eb37c6904f74a18844b9f67d00cc1bc8ac4b2 100755
--- a/setup.py
+++ b/setup.py
@@ -49,7 +49,10 @@ setup(
     setup_requires=['vcversioner'],
     install_requires=(parse_requirements() + parse_requirements('swh') +
                       blake2_requirements),
-    extras_require={'testing': parse_requirements('test')},
+    extras_require={
+        'cli': parse_requirements('cli'),
+        'testing': parse_requirements('test'),
+    },
     vcversioner={},
     include_package_data=True,
     entry_points='''