1. Python / Говнокод #11789

    −105

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    #!/usr/bin/env python
    #-*- coding: utf-8 -*-
    
    import os, sys
    
    ARGV = sys.argv
    ARGC = len( ARGV )
    
    GITLOG = "git log --name-status --no-merges --pretty=format:\"%h|_|%ad|_|%s\""
    
    def osexec( _cmd ):
        es_ = os.system( _cmd )
        print "%d <== '%s'" % ( es_, _cmd )
        #raw_input()
    
    # === body =====================================================================
    
    CFD = os.popen( GITLOG )
    LOG = CFD.read().split( "\n\n" )
    CFD.close()
    
    DLOG = []
    for i in LOG:
        a = i.split( "\n" )
    
        rdm = a[0] # rev|_|date|_|msg
        rdm_ = rdm.split( "|_|" )
    
        files = []
        for j in a[1:]:
            files.append( j ) # A/M/D\tfilename
    
        e = {}
        e["rev"]    = rdm_[0]
        e["dt"]     = rdm_[1]
        e["msg"]    = rdm_[2]
        e["files"]  = files
    
        DLOG.append( e )
    
    DLOG.reverse()
    for i in DLOG:
        print "log:", i
    
        cmd = "git checkout -f %s" % i["rev"]
        osexec( cmd )
    
        files = i["files"]
        if ( 0 == len( files ) ):
            # skip merges
            continue
    
        for j in files:
            if ( "" == j ):
                continue
    
            j_ = j.split( "\t" )
    
            m = j_[0]
            f = j_[1]
    
            cmd = ""
            if ( "A" == m ):
                cmd = "hg add %s" % f
            elif ( "D" == m ):
                cmd = "hg rm %s" % f
    
            if ( not "" == cmd ):
                osexec( cmd )
    
        cmd = "hg ci -m \"%s\" -d \"%s\"" % ( i["msg"], i["dt"] )
    
        osexec( cmd )

    Типа переносим гитовые коммиты в меркуриал... При попутном ветре, ага. Буээ

    Запостил: ilardm, 17 Сентября 2012

    Комментарии (5) RSS

    Добавить комментарий