diff --git a/.gitlab-ci/getpipelineinfo.py b/.gitlab-ci/getpipelineinfo.py
index f9dfffda19317d408ae52484682f24a0cba84a93..46a48a4b410f5de4d23c7cde790996da4d4507bb 100644
--- a/.gitlab-ci/getpipelineinfo.py
+++ b/.gitlab-ci/getpipelineinfo.py
@@ -23,12 +23,10 @@ class APIRequester:
         return json.loads(data)
 
 
-def getPipeLinesApiSuffix(): return 'pipelines/'
-def getPipeLineApiSuffix(id): return 'pipelines/' + str(id) + '/'
-
-
-def getCommitsApiSuffix(): return 'repository/commits/'
-def getCommitApiSuffix(sha): return 'repository/commits/' + sha + '/'
+def pipelinesApiSuffix(): return 'pipelines/'
+def pipelineApiSuffix(id): return 'pipelines/' + str(id) + '/'
+def commitsApiSuffix(): return 'repository/commits/'
+def commitApiSuffix(sha): return 'repository/commits/' + sha + '/'
 
 
 parser = ArgumentParser(
@@ -41,6 +39,10 @@ parser.add_argument('-p', '--print-format',
 parser.add_argument('-l', '--look-for',
                     required=True, choices=['latest', 'latest-merge', 'HEAD'],
                     help='Define how to search for pipelines')
+parser.add_argument('-m', '--max-tree-depth',
+                    required=False, type=int, default=50,
+                    help='Maximum number of revisions to consider'
+                         ' in search for pipeline candidates')
 parser.add_argument('-t', '--access-token',
                     required=True,
                     help='The token to post read requests to the GitLab API')
@@ -67,7 +69,7 @@ def isMergeCommit(commitSHA):
 
 
 def getLastPipeline(commitSHA):
-    return requester(getCommitApiSuffix(commitSHA))['last_pipeline']
+    return requester(commitApiSuffix(commitSHA))['last_pipeline']
 
 
 def hasMatchingStatus(pipeline):
@@ -75,8 +77,7 @@ def hasMatchingStatus(pipeline):
 
 
 def hasExcludeJob(pipeLine):
-    id = pipeLine['id']
-    suffix = getPipeLineApiSuffix(id)
+    suffix = pipelineApiSuffix(pipeLine['id'])
     jobs = requester(suffix.rstrip('/') + '/jobs/')
     return any(j in jobs for j in args['exclude_jobs'])
 
@@ -98,12 +99,14 @@ if args['look_for'] == 'HEAD':
     pipeLine = findPipeline(commits)
 
 elif args['look_for'] == 'latest':
-    commits = runCommand('git rev-list HEAD').split('\n')
+    count = args['max_tree_depth']
+    commits = filter(None, runCommand(f'git rev-list HEAD --max-count={count}').split('\n'))
     pipeLine = findPipeline(commits)
 
 elif args['look_for'] == 'latest-merge':
-    commits = runCommand('git rev-list HEAD').split('\n')
-    pipeLine = findPipeline(filter(lambda c: isMergeCommit(c), commits))
+    count = args['max_tree_depth']
+    commits = filter(None, runCommand(f'git rev-list HEAD --max-count={count}').split('\n'))
+    pipeLine = findPipeline(filter(lambda c: isMergeCommit(c)), commits)
 
 if pipeLine is not None:
     if args['print_format'] == 'pipeline-id':