@@ -116,12 +116,23 @@ def cmd_result_set(cmd):
116116 return set ()
117117 return {f .strip () for f in ret .split ("\n " )}
118118
119+ def rel_paths (files , root ):
120+ return {os .path .relpath (os .path .join (root , f .strip ()), "." ) for f in files }
121+
119122 try :
120123 ret = set ()
121124
125+ # get path to root of repository
126+ root_dir = (
127+ subprocess .run (["git" , "rev-parse" , "--show-toplevel" ], capture_output = True )
128+ .stdout .strip ()
129+ .decode ()
130+ )
131+
122132 # Check locally modified files
123- dirty = cmd_result_set (["git" , "status" , "--porcelain" ])
124- ret = {line .split (" " , 1 )[- 1 ] for line in dirty }
133+ status = cmd_result_set (["git" , "status" , "--porcelain" ])
134+ dirty_files = rel_paths ({line .split (" " , 1 )[- 1 ] for line in status }, root_dir )
135+ ret |= dirty_files
125136
126137 # Current commit and branch
127138 current_commit = (
@@ -144,7 +155,10 @@ def cmd_result_set(cmd):
144155 # List the files modified on current branch
145156 if verbose :
146157 print ("Scanning changes from current branch and any local changes" )
147- ret |= cmd_result_set (["git" , "diff" , "--relative" , "--name-only" , BASE_BRANCH ])
158+ files_on_branch = rel_paths (
159+ cmd_result_set (["git" , "diff" , "--name-only" , BASE_BRANCH ]), root_dir
160+ )
161+ ret |= files_on_branch
148162 return ret
149163 except :
150164 # Git not available, run on entire repo
0 commit comments