Changeset 1470 in tailor


Ignore:
Timestamp:
03/21/08 02:50:09 (5 years ago)
Author:
Miklos Vajna <vmiklos@…>
Hash name:
20080321015009-8c5d4-0ee723243fc226e79648ba53b82abf7e869dec56
Message:

git target: rename() won't work for rename(a/b, a)

so do it manually

File:
1 edited

Legend:

Unmodified
Added
Removed
  • vcpx/repository/git/target.py

    r1466 r1470  
    223223        # moved the item. 
    224224 
    225         from os import rename 
    226         from os.path import join 
     225        from os import mkdir, rename, rmdir 
     226        from os.path import join, exists 
    227227 
    228228        oldpath = join(self.repository.basedir, oldname) 
    229229        newpath = join(self.repository.basedir, newname) 
    230230 
    231         rename(newpath, oldpath) 
    232         self.repository.runCommand(['mv', oldname, newname]) 
     231        # rename() won't work for rename(a/b, a) 
     232        if newpath.startswith(oldpath): 
     233            oldpathtmp = oldpath+"-TAILOR-HACKED-TEMP-NAME" 
     234            oldnametmp = oldname+"-TAILOR-HACKED-TEMP-NAME" 
     235            if exists(oldpathtmp): 
     236                rename(oldpathtmp, oldpath) 
     237            rename(newpath, oldpathtmp) 
     238            rmdir(oldpath) 
     239            rename(oldpathtmp, oldpath) 
     240            mkdir(oldpathtmp) 
     241            self.repository.runCommand(['mv', oldname, newname.replace(oldname, oldnametmp, 1)]) 
     242            self.repository.runCommand(['mv', oldnametmp, oldname]) 
     243        else: 
     244            rename(newpath, oldpath) 
     245            self.repository.runCommand(['mv', oldname, newname]) 
    233246 
    234247    def _prepareTargetRepository(self): 
Note: See TracChangeset for help on using the changeset viewer.