@@ -170,9 +170,11 @@ def reset_deleted_files(self):
170170 'git' , 'ls-files' , '--deleted' , '-z'
171171 ], cwd = self .repo_dir ).decode ().strip ().split ('\0 ' )
172172
173+ upstream_deleted = self .find_upstream_changed ('D' )
173174 for filename in deleted_files :
174- if filename : # Filter out empty lines
175- yield from execute_cmd (['git' , 'checkout' , '--' , filename ], cwd = self .repo_dir )
175+ # Filter out empty lines, and files that were deleted in the remote
176+ if filename and filename not in upstream_deleted :
177+ yield from execute_cmd (['git' , 'checkout' , 'origin/{}' .format (self .branch_name ), '--' , filename ], cwd = self .repo_dir )
176178
177179 def repo_is_dirty (self ):
178180 """
@@ -196,13 +198,13 @@ def find_upstream_changed(self, kind):
196198 Return list of files that have been changed upstream belonging to a particular kind of change
197199 """
198200 output = subprocess .check_output ([
199- 'git' , 'log ' , '..origin/{}' .format (self .branch_name ),
200- '--oneline' , '-- name-status'
201+ 'git' , 'diff ' , '..origin/{}' .format (self .branch_name ),
202+ '--name-status'
201203 ], cwd = self .repo_dir ).decode ()
202204 files = []
203205 for line in output .split ('\n ' ):
204206 if line .startswith (kind ):
205- files .append (os . path . join ( self . repo_dir , line .split ('\t ' , 1 )[1 ]) )
207+ files .append (line .split ('\t ' , 1 )[1 ])
206208
207209 return files
208210
@@ -237,6 +239,7 @@ def rename_local_untracked(self):
237239 # Find what files have been added!
238240 new_upstream_files = self .find_upstream_changed ('A' )
239241 for f in new_upstream_files :
242+ f = os .path .join (self .repo_dir , f )
240243 if os .path .exists (f ):
241244 # If there's a file extension, put the timestamp before that
242245 ts = datetime .datetime .now ().strftime ('__%Y%m%d%H%M%S' )
0 commit comments