Hex Artifact Content Вы: nobody
Вход

Artifact dd9b4b65f390d69500e07a6e9739255813a579fb:


0000: ef bb bf 24 65 6e 67 69 6e 65 20 4a 53 63 72 69  ...$engine JScri
0010: 70 74 0d 0a 24 75 6e 61 6d 65 20 64 76 63 73 5f  pt..$uname dvcs_
0020: 67 69 74 0d 0a 24 64 6e 61 6d 65 20 42 61 63 6b  git..$dname Back
0030: 65 6e 64 20 64 76 63 73 20 d0 ba 20 67 69 74 0d  end dvcs .. git.
0040: 0a 24 61 64 64 69 6e 20 73 74 64 6c 69 62 0d 0a  .$addin stdlib..
0050: 24 61 64 64 69 6e 20 67 6c 6f 62 61 6c 0d 0a 0d  $addin global...
0060: 0a 2f 2f 20 28 63 29 20 d0 a1 d0 be d1 81 d0 bd  .// (c) ........
0070: d0 b0 20 d0 95 d0 b2 d0 b3 d0 b5 d0 bd d0 b8 d0  .. .............
0080: b9 20 73 68 65 6e 6a 61 20 61 74 20 73 6f 73 6e  . shenja at sosn
0090: 61 2e 7a 70 2e 75 61 0d 0a 2f 2f 20 d0 a1 d0 ba  a.zp.ua..// ....
00a0: d1 80 d0 b8 d0 bf d1 82 20 2d 20 42 61 63 6b 65  ........ - Backe
00b0: 6e 64 20 d0 ba 20 62 7a 72 20 d0 b4 d0 bb d1 8f  nd .. bzr ......
00c0: 20 d0 be d1 82 d0 be d0 b1 d1 80 d0 b0 d0 b6 d0   ...............
00d0: b5 d0 bd d0 b8 d1 8f 20 d0 b2 d0 b5 d1 80 d1 81  ....... ........
00e0: d0 b8 d0 be d0 bd d0 bd d0 be d0 b3 d0 be 20 d0  .............. .
00f0: ba d0 be d0 bd d1 82 d1 80 d0 be d0 bb d1 8f 2e  ................
0100: 20 0d 0a 0d 0a 67 6c 6f 62 61 6c 2e 63 6f 6e 6e   ....global.conn
0110: 65 63 74 47 6c 6f 62 61 6c 73 28 53 65 6c 66 53  ectGlobals(SelfS
0120: 63 72 69 70 74 29 0d 0a 0d 0a 76 61 72 20 6d 61  cript)....var ma
0130: 69 6e 46 6f 6c 64 65 72 20 3d 20 73 74 64 6c 69  inFolder = stdli
0140: 62 2e 67 65 74 53 6e 65 67 6f 70 61 74 4d 61 69  b.getSnegopatMai
0150: 6e 46 6f 6c 64 65 72 28 29 3b 0d 0a 0d 0a 76 61  nFolder();....va
0160: 72 20 46 53 4f 20 3d 20 6e 65 77 20 41 63 74 69  r FSO = new Acti
0170: 76 65 58 4f 62 6a 65 63 74 28 22 53 63 72 69 70  veXObject("Scrip
0180: 74 69 6e 67 2e 46 69 6c 65 53 79 73 74 65 6d 4f  ting.FileSystemO
0190: 62 6a 65 63 74 22 29 3b 0d 0a 76 61 72 20 57 73  bject");..var Ws
01a0: 68 53 68 65 6c 6c 20 3d 20 6e 65 77 20 41 63 74  hShell = new Act
01b0: 69 76 65 58 4f 62 6a 65 63 74 28 22 57 53 63 72  iveXObject("WScr
01c0: 69 70 74 2e 53 68 65 6c 6c 22 29 3b 0d 0a 76 61  ipt.Shell");..va
01d0: 72 20 54 65 6d 70 44 69 72 20 3d 20 57 73 68 53  r TempDir = WshS
01e0: 68 65 6c 6c 2e 45 78 70 61 6e 64 45 6e 76 69 72  hell.ExpandEnvir
01f0: 6f 6e 6d 65 6e 74 53 74 72 69 6e 67 73 28 22 25  onmentStrings("%
0200: 74 65 6d 70 25 22 29 20 2b 20 22 5c 5c 22 3b 0d  temp%") + "\\";.
0210: 0a 0d 0a 42 61 63 6b 65 6e 64 47 69 74 20 3d 20  ...BackendGit = 
0220: 73 74 64 6c 69 62 2e 43 6c 61 73 73 2e 65 78 74  stdlib.Class.ext
0230: 65 6e 64 28 7b 0d 0a 0d 0a 20 20 20 20 63 6f 6e  end({....    con
0240: 73 74 72 75 63 74 20 3a 20 66 75 6e 63 74 69 6f  struct : functio
0250: 6e 28 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 74  n() {..        t
0260: 68 69 73 2e 6d 61 69 6e 46 6f 6c 64 65 72 20 3d  his.mainFolder =
0270: 20 6d 61 69 6e 46 6f 6c 64 65 72 3b 0d 0a 20 20   mainFolder;..  
0280: 20 20 20 20 20 20 74 68 69 73 2e 70 61 74 68 54        this.pathT
0290: 6f 42 69 6e 20 3d 20 22 67 69 74 22 3b 0d 0a 20  oBin = "git";.. 
02a0: 20 20 20 20 20 20 20 74 68 69 73 2e 43 61 74 61         this.Cata
02b0: 6c 6f 67 41 6e 64 46 69 6c 65 73 53 74 61 74 75  logAndFilesStatu
02c0: 73 20 3d 20 5b 5d 3b 0d 0a 20 20 20 20 09 74 68  s = [];..    .th
02d0: 69 73 2e 70 61 74 68 54 6f 54 65 6d 70 4f 75 74  is.pathToTempOut
02e0: 70 75 74 20 3d 20 54 65 6d 70 44 69 72 2b 22 67  put = TempDir+"g
02f0: 69 74 73 74 61 74 75 73 2e 74 78 74 22 20 2f 2f  itstatus.txt" //
0300: 20 d0 9f d0 b8 d1 88 d0 b5 d0 bc 20 31 d0 a1 20   .......... 1.. 
0310: d1 84 d0 b0 d0 b9 d0 bb 20 d0 b2 20 75 74 66 2d  ........ .. utf-
0320: 38 2c 20 d0 b2 d1 8b d0 b2 d0 be d0 b4 d0 b8 d0  8, .............
0330: bc 20 d1 82 d1 83 d0 b4 d0 b0 20 d1 81 d1 82 d0  . ........ .....
0340: b0 d1 82 d1 83 d1 81 20 66 6f 73 73 69 6c 20 d0  ....... fossil .
0350: bf d0 be d1 81 d0 bb d0 b5 20 d1 8d d1 82 d0 be  ......... ......
0360: d0 b3 d0 be 20 d1 87 d0 b8 d1 82 d0 b0 d0 b5 d0  .... ...........
0370: bc 20 d0 b5 d0 b3 d0 be 2e 20 0d 0a 09 09 74 68  . ....... ....th
0380: 69 73 2e 70 61 74 68 54 6f 43 6d 64 20 3d 20 54  is.pathToCmd = T
0390: 65 6d 70 44 69 72 20 2b 20 22 67 69 74 63 6d 64  empDir + "gitcmd
03a0: 2e 62 61 74 22 3b 0d 0a 0d 0a 09 09 42 61 63 6b  .bat";......Back
03b0: 65 6e 64 47 69 74 2e 5f 69 6e 73 74 61 6e 63 65  endGit._instance
03c0: 20 3d 20 74 68 69 73 3b 0d 0a 0d 0a 20 20 20 20   = this;....    
03d0: 7d 2c 0d 0a 0d 0a 20 20 20 20 67 65 74 52 6f 6f  },....    getRoo
03e0: 74 43 61 74 61 6c 6f 67 20 3a 20 66 75 6e 63 74  tCatalog : funct
03f0: 69 6f 6e 28 70 61 74 68 29 7b 0d 0a 0d 0a 20 20  ion(path){....  
0400: 20 20 09 76 61 72 20 72 65 73 75 6c 74 20 3d 20    .var result = 
0410: 22 22 3b 0d 0a 09 20 20 20 20 66 6f 72 20 28 76  "";...    for (v
0420: 61 72 20 6b 65 79 20 69 6e 20 74 68 69 73 2e 43  ar key in this.C
0430: 61 74 61 6c 6f 67 41 6e 64 46 69 6c 65 73 53 74  atalogAndFilesSt
0440: 61 74 75 73 29 7b 0d 0a 09 20 20 20 20 20 20 20  atus){...       
0450: 20 69 66 20 28 70 61 74 68 2e 69 6e 64 65 78 4f   if (path.indexO
0460: 66 28 6b 65 79 29 21 3d 2d 31 29 20 7b 0d 0a 09  f(key)!=-1) {...
0470: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75              resu
0480: 6c 74 20 3d 20 6b 65 79 0d 0a 09 20 20 20 20 20  lt = key...     
0490: 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 09         break;...
04a0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 09          }..    .
04b0: 7d 0d 0a 20 20 20 20 09 69 66 20 28 28 72 65 73  }..    .if ((res
04c0: 75 6c 74 20 3d 3d 20 75 6e 64 65 66 69 6e 65 64  ult == undefined
04d0: 29 20 26 26 20 28 72 65 73 75 6c 74 2e 6c 65 6e  ) && (result.len
04e0: 67 74 68 3d 3d 30 29 29 7b 0d 0a 20 20 20 20 09  gth==0)){..    .
04f0: 09 76 61 72 20 66 20 3d 20 76 38 4e 65 77 28 22  .var f = v8New("
0500: 46 69 6c 65 22 2c 20 70 61 74 68 29 3b 0d 0a 09  File", path);...
0510: 20 20 20 20 20 20 20 20 69 66 20 28 66 2e 45 78          if (f.Ex
0520: 69 73 74 28 29 29 20 7b 0d 0a 09 20 20 20 20 20  ist()) {...     
0530: 20 20 20 20 20 20 20 0d 0a 09 20 20 20 20 20 20         ...      
0540: 20 20 20 20 20 20 76 61 72 20 54 65 78 74 44 6f        var TextDo
0550: 63 20 3d 20 76 38 4e 65 77 28 22 54 65 78 74 44  c = v8New("TextD
0560: 6f 63 75 6d 65 6e 74 22 29 3b 0d 0a 09 20 20 20  ocument");...   
0570: 20 20 20 20 20 20 20 20 20 54 65 78 74 44 6f 63           TextDoc
0580: 2e d0 97 d0 b0 d0 bf d0 b8 d1 81 d0 b0 d1 82 d1  ................
0590: 8c 28 74 68 69 73 2e 70 61 74 68 54 6f 54 65 6d  .(this.pathToTem
05a0: 70 4f 75 74 70 75 74 2c 20 22 55 54 46 2d 38 22  pOutput, "UTF-8"
05b0: 29 3b 0d 0a 09 20 20 20 20 20 20 20 20 20 20 20  );...           
05c0: 20 d0 bc d0 bb d0 9a d0 b0 d1 82 d0 b0 d0 bb d0   ...............
05d0: be d0 b3 20 3d 20 66 2e 50 61 74 68 3b 0d 0a 09  ... = f.Path;...
05e0: 20 20 20 20 20 20 20 20 20 20 20 20 54 65 78 74              Text
05f0: 44 6f 63 2e 41 64 64 4c 69 6e 65 28 27 63 64 20  Doc.AddLine('cd 
0600: 2f 64 22 27 20 2b d0 bc d0 bb d0 9a d0 b0 d1 82  /d"' +..........
0610: d0 b0 d0 bb d0 be d0 b3 20 2b 27 22 27 29 0d 0a  ........ +'"')..
0620: 09 20 20 20 20 20 20 20 20 20 20 20 20 54 65 78  .            Tex
0630: 74 44 6f 63 2e 41 64 64 4c 69 6e 65 28 27 67 69  tDoc.AddLine('gi
0640: 74 20 72 65 76 2d 70 61 72 73 65 20 2d 2d 73 68  t rev-parse --sh
0650: 6f 77 2d 74 6f 70 6c 65 76 65 6c 20 3e 20 22 27  ow-toplevel > "'
0660: 2b 74 68 69 73 2e 70 61 74 68 54 6f 54 65 6d 70  +this.pathToTemp
0670: 4f 75 74 70 75 74 2b 27 22 27 29 3b 20 2f 2f 20  Output+'"'); // 
0680: 68 74 74 70 3a 2f 2f 73 74 61 63 6b 6f 76 65 72  http://stackover
0690: 66 6c 6f 77 2e 63 6f 6d 2f 71 75 65 73 74 69 6f  flow.com/questio
06a0: 6e 73 2f 39 35 37 39 32 38 2f 69 73 2d 74 68 65  ns/957928/is-the
06b0: 72 65 2d 61 2d 77 61 79 2d 74 6f 2d 67 65 74 2d  re-a-way-to-get-
06c0: 74 68 65 2d 67 69 74 2d 72 6f 6f 74 2d 64 69 72  the-git-root-dir
06d0: 65 63 74 6f 72 79 2d 69 6e 2d 6f 6e 65 2d 63 6f  ectory-in-one-co
06e0: 6d 6d 61 6e 64 0d 0a 09 20 20 20 20 20 20 20 20  mmand...        
06f0: 20 20 20 20 54 65 78 74 44 6f 63 2e 57 72 69 74      TextDoc.Writ
0700: 65 28 74 68 69 73 2e 70 61 74 68 54 6f 43 6d 64  e(this.pathToCmd
0710: 2c 20 27 63 70 38 36 36 27 29 3b 0d 0a 09 20 20  , 'cp866');...  
0720: 20 20 20 20 20 20 20 20 20 20 45 72 72 43 6f 64            ErrCod
0730: 65 20 3d 20 57 73 68 53 68 65 6c 6c 2e 52 75 6e  e = WshShell.Run
0740: 28 27 22 27 2b 74 68 69 73 2e 70 61 74 68 54 6f  ('"'+this.pathTo
0750: 43 6d 64 2b 27 22 27 2c 20 30 2c 20 31 29 0d 0a  Cmd+'"', 0, 1)..
0760: 09 20 20 20 20 20 20 20 20 20 20 20 20 54 65 78  .            Tex
0770: 74 44 6f 63 2e 52 65 61 64 28 74 68 69 73 2e 70  tDoc.Read(this.p
0780: 61 74 68 54 6f 54 65 6d 70 4f 75 74 70 75 74 2c  athToTempOutput,
0790: 20 22 55 54 46 2d 38 22 29 3b 0d 0a 09 20 20 20   "UTF-8");...   
07a0: 20 20 20 20 20 20 20 20 20 69 66 20 28 54 65 78           if (Tex
07b0: 74 44 6f 63 2e 4c 69 6e 65 43 6f 75 6e 74 28 29  tDoc.LineCount()
07c0: 20 3d 3d 20 30 29 20 7b 0d 0a 09 20 20 20 20 20   == 0) {...     
07d0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
07e0: 6e 20 22 22 20 2f 2f d1 87 d1 82 d0 be 20 d1 82  n "" //...... ..
07f0: d0 be 20 d0 bf d0 be d1 88 d0 bb d0 be 20 d0 bd  .. .......... ..
0800: d0 b5 20 d1 82 d0 b0 d0 ba 2e 20 0d 0a 09 20 20  .. ....... ...  
0810: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 09 20 20            }...  
0820: 20 20 20 20 20 20 0d 0a 09 20 20 20 20 20 20 20        ...       
0830: 20 20 20 20 20 76 61 72 20 69 3d 30 3b 0d 0a 09       var i=0;...
0840: 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20              for 
0850: 28 76 61 72 20 69 3d 31 3b 20 69 3c 3d 54 65 78  (var i=1; i<=Tex
0860: 74 44 6f 63 2e 4c 69 6e 65 43 6f 75 6e 74 28 29  tDoc.LineCount()
0870: 3b 20 69 2b 2b 29 0d 0a 09 20 20 20 20 20 20 20  ; i++)...       
0880: 20 20 20 20 20 7b 0d 0a 09 20 20 20 20 20 20 20       {...       
0890: 20 20 20 20 20 20 20 20 20 76 61 72 20 72 20 3d           var r =
08a0: 20 54 65 78 74 44 6f 63 2e 47 65 74 4c 69 6e 65   TextDoc.GetLine
08b0: 28 69 29 3b 20 2f 2f 20 d1 82 d1 83 d1 82 20 d0  (i); // ...... .
08c0: b1 d1 83 d0 b4 d0 b5 d1 82 20 d0 bf d0 b5 d1 80  ......... ......
08d0: d0 b2 d0 b0 d1 8f 20 d0 bb d0 b8 d0 bd d0 b8 d1  ...... .........
08e0: 8f 2e 20 0d 0a 09 20 20 20 20 20 20 20 20 20 20  .. ...          
08f0: 20 20 20 20 20 20 69 66 20 28 72 2e 73 75 62 73        if (r.subs
0900: 74 72 28 30 2c 35 29 2e 69 6e 64 65 78 4f 66 28  tr(0,5).indexOf(
0910: 22 66 61 74 61 6c 22 29 20 21 3d 20 2d 31 29 7b  "fatal") != -1){
0920: 0d 0a 0d 0a 09 20 20 20 20 20 20 20 20 20 20 20  .....           
0930: 20 20 20 20 20 09 72 6f 6f 74 70 61 74 68 20 3d       .rootpath =
0940: 20 72 2e 72 65 70 6c 61 63 65 28 2f 5c 2f 2f 67   r.replace(/\//g
0950: 2c 20 27 5c 5c 27 29 3b 0d 0a 09 20 20 20 20 20  , '\\');...     
0960: 20 20 20 20 20 20 20 20 20 20 20 09 72 65 73 75             .resu
0970: 6c 74 20 3d 20 72 6f 6f 74 70 61 74 68 3b 0d 0a  lt = rootpath;..
0980: 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
0990: 20 09 74 68 69 73 2e 43 61 74 61 6c 6f 67 41 6e   .this.CatalogAn
09a0: 64 46 69 6c 65 73 53 74 61 74 75 73 5b 72 65 73  dFilesStatus[res
09b0: 75 6c 74 5d 20 3d 20 7b 7d 3b 0d 0a 09 20 20 20  ult] = {};...   
09c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 09 62 72               .br
09d0: 65 61 6b 0d 0a 09 20 20 20 20 20 20 20 20 20 20  eak...          
09e0: 20 20 20 20 20 20 7d 0d 0a 09 20 20 20 20 20 20        }...      
09f0: 20 20 20 20 20 20 7d 0d 0a 09 20 20 20 20 20 20        }...      
0a00: 20 20 20 20 20 20 54 65 78 74 44 6f 63 2e 43 6c        TextDoc.Cl
0a10: 65 61 72 28 29 3b 0d 0a 09 20 20 20 20 20 20 20  ear();...       
0a20: 20 20 20 20 20 54 65 78 74 44 6f 63 2e 57 72 69       TextDoc.Wri
0a30: 74 65 28 74 68 69 73 2e 70 61 74 68 54 6f 54 65  te(this.pathToTe
0a40: 6d 70 4f 75 74 70 75 74 2c 20 22 55 54 46 2d 38  mpOutput, "UTF-8
0a50: 22 29 3b 0d 0a 09 20 20 20 20 20 20 20 20 7d 0d  ");...        }.
0a60: 0a 20 20 20 20 09 7d 0d 0a 09 20 20 20 20 72 65  .    .}...    re
0a70: 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20  turn result;..  
0a80: 20 20 7d 2c 0d 0a 0d 0a 20 20 20 20 67 65 74 53    },....    getS
0a90: 74 61 74 75 73 46 6f 72 43 61 74 61 6c 6f 67 20  tatusForCatalog 
0aa0: 3a 20 66 75 6e 63 74 69 6f 6e 28 70 61 74 68 54  : function(pathT
0ab0: 6f 43 61 74 61 6c 6f 67 29 7b 0d 0a 20 20 20 20  oCatalog){..    
0ac0: 20 20 20 20 69 66 20 28 21 74 68 69 73 2e 43 61      if (!this.Ca
0ad0: 74 61 6c 6f 67 41 6e 64 46 69 6c 65 73 53 74 61  talogAndFilesSta
0ae0: 74 75 73 20 29 20 7b 0d 0a 20 20 20 20 20 20 20  tus ) {..       
0af0: 20 20 20 20 20 4d 65 73 73 61 67 65 28 22 6e 6f       Message("no
0b00: 74 20 64 65 66 69 6e 65 64 22 29 3b 0d 0a 20 20  t defined");..  
0b10: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 43            this.C
0b20: 61 74 61 6c 6f 67 41 6e 64 46 69 6c 65 73 53 74  atalogAndFilesSt
0b30: 61 74 75 73 3d 5b 5d 0d 0a 20 20 20 20 20 20 20  atus=[]..       
0b40: 20 7d 0d 0a 20 20 20 20 09 74 68 69 73 2e 43 61   }..    .this.Ca
0b50: 74 61 6c 6f 67 41 6e 64 46 69 6c 65 73 53 74 61  talogAndFilesSta
0b60: 74 75 73 5b 70 61 74 68 54 6f 43 61 74 61 6c 6f  tus[pathToCatalo
0b70: 67 5d 20 3d 20 7b 7d 3b 0d 0a 20 20 20 20 09 76  g] = {};..    .v
0b80: 61 72 20 d0 a1 d0 be d0 be d1 82 d0 b2 d0 b5 d1  ar .............
0b90: 82 d1 81 d1 82 d0 b2 d0 b8 d0 b5 d0 a1 d1 82 d0  ................
0ba0: b0 d1 82 d1 83 d1 81 d0 be d0 b2 20 3d 20 74 68  ........... = th
0bb0: 69 73 2e 43 61 74 61 6c 6f 67 41 6e 64 46 69 6c  is.CatalogAndFil
0bc0: 65 73 53 74 61 74 75 73 5b 70 61 74 68 54 6f 43  esStatus[pathToC
0bd0: 61 74 61 6c 6f 67 5d 3b 0d 0a 20 20 20 20 09 76  atalog];..    .v
0be0: 61 72 20 54 65 78 74 44 6f 63 20 3d 20 76 38 4e  ar TextDoc = v8N
0bf0: 65 77 28 22 54 65 78 74 44 6f 63 75 6d 65 6e 74  ew("TextDocument
0c00: 22 29 3b 0d 0a 20 20 20 20 09 54 65 78 74 44 6f  ");..    .TextDo
0c10: 63 2e 57 72 69 74 65 28 74 68 69 73 2e 70 61 74  c.Write(this.pat
0c20: 68 54 6f 54 65 6d 70 4f 75 74 70 75 74 2c 20 22  hToTempOutput, "
0c30: 55 54 46 2d 38 22 29 3b 0d 0a 20 20 20 20 09 54  UTF-8");..    .T
0c40: 65 78 74 44 6f 63 2e 41 64 64 4c 69 6e 65 28 27  extDoc.AddLine('
0c50: 63 64 20 2f 64 20 22 27 20 2b 70 61 74 68 54 6f  cd /d "' +pathTo
0c60: 43 61 74 61 6c 6f 67 2b 27 22 27 29 3b 0d 0a 20  Catalog+'"');.. 
0c70: 20 20 20 09 54 65 78 74 44 6f 63 2e 41 64 64 4c     .TextDoc.AddL
0c80: 69 6e 65 28 27 67 69 74 20 73 74 61 74 75 73 20  ine('git status 
0c90: 2d 73 20 2d 75 20 2d 2d 70 6f 72 63 65 6c 61 69  -s -u --porcelai
0ca0: 6e 20 3e 20 22 27 2b 74 68 69 73 2e 70 61 74 68  n > "'+this.path
0cb0: 54 6f 54 65 6d 70 4f 75 74 70 75 74 2b 27 22 27  ToTempOutput+'"'
0cc0: 29 3b 0d 0a 20 20 20 20 09 54 65 78 74 44 6f 63  );..    .TextDoc
0cd0: 2e 57 72 69 74 65 28 74 68 69 73 2e 70 61 74 68  .Write(this.path
0ce0: 54 6f 43 6d 64 2c 20 22 63 70 38 36 36 22 29 3b  ToCmd, "cp866");
0cf0: 0d 0a 20 20 20 20 09 45 72 72 43 6f 64 65 20 3d  ..    .ErrCode =
0d00: 20 57 73 68 53 68 65 6c 6c 2e 52 75 6e 28 27 22   WshShell.Run('"
0d10: 27 2b 74 68 69 73 2e 70 61 74 68 54 6f 43 6d 64  '+this.pathToCmd
0d20: 2b 27 22 27 2c 20 30 2c 20 31 29 3b 0d 0a 20 20  +'"', 0, 1);..  
0d30: 20 20 09 54 65 78 74 44 6f 63 2e 52 65 61 64 28    .TextDoc.Read(
0d40: 74 68 69 73 2e 70 61 74 68 54 6f 54 65 6d 70 4f  this.pathToTempO
0d50: 75 74 70 75 74 2c 20 22 55 54 46 2d 38 22 29 3b  utput, "UTF-8");
0d60: 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 54 65  ..        if (Te
0d70: 78 74 44 6f 63 2e 4c 69 6e 65 43 6f 75 6e 74 28  xtDoc.LineCount(
0d80: 29 20 3d 3d 20 30 29 20 7b 0d 0a 20 20 20 20 20  ) == 0) {..     
0d90: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
0da0: 6e 20 66 61 6c 73 65 20 2f 2f d1 87 d1 82 d0 be  n false //......
0db0: 20 d1 82 d0 be 20 d0 bf d0 be d1 88 d0 bb d0 be   .... ..........
0dc0: 20 d0 bd d0 b5 20 d1 82 d0 b0 d0 ba 2e 20 0d 0a   .... ....... ..
0dd0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
0de0: 20 20 20 76 61 72 20 69 3d 30 3b 0d 0a 20 20 20     var i=0;..   
0df0: 20 20 20 20 20 72 65 20 3d 20 6e 65 77 20 52 65       re = new Re
0e00: 67 45 78 70 28 2f 5e 28 4d 7c 41 7c 44 7c 5c 3f  gExp(/^(M|A|D|\?
0e10: 5c 3f 7c 52 7c 43 7c 55 29 5c 73 7b 31 2c 32 7d  \?|R|C|U)\s{1,2}
0e20: 28 2e 2a 29 24 2f 29 3b 0d 0a 20 20 20 20 20 20  (.*)$/);..      
0e30: 20 20 66 6f 72 20 28 76 61 72 20 69 3d 31 3b 20    for (var i=1; 
0e40: 69 3c 3d 54 65 78 74 44 6f 63 2e 4c 69 6e 65 43  i<=TextDoc.LineC
0e50: 6f 75 6e 74 28 29 3b 20 69 2b 2b 29 0d 0a 20 20  ount(); i++)..  
0e60: 20 20 20 20 20 20 7b 0d 0a 09 20 20 20 20 20 20        {...      
0e70: 20 20 76 61 72 20 72 20 3d 20 54 65 78 74 44 6f    var r = TextDo
0e80: 63 2e 47 65 74 4c 69 6e 65 28 69 29 3b 0d 0a 09  c.GetLine(i);...
0e90: 20 20 20 20 20 20 20 20 76 61 72 20 6d 61 74 68          var math
0ea0: 65 73 20 3d 20 72 2e 6d 61 74 63 68 28 72 65 29  es = r.match(re)
0eb0: 3b 0d 0a 09 20 20 20 20 20 20 20 20 69 66 20 28  ;...        if (
0ec0: 6d 61 74 68 65 73 20 26 26 20 6d 61 74 68 65 73  mathes && mathes
0ed0: 2e 6c 65 6e 67 74 68 29 20 7b 0d 0a 09 20 20 20  .length) {...   
0ee0: 20 20 20 20 20 20 20 20 20 66 69 6c 65 6e 61 6d           filenam
0ef0: 65 20 3d 20 22 22 2b 6d 61 74 68 65 73 5b 32 5d  e = ""+mathes[2]
0f00: 20 0d 0a 09 20 20 20 20 20 20 20 20 20 20 20 20   ...            
0f10: 66 69 6c 65 6e 61 6d 65 20 3d 20 66 69 6c 65 6e  filename = filen
0f20: 61 6d 65 2e 72 65 70 6c 61 63 65 28 2f 5c 2f 2f  ame.replace(/\//
0f30: 67 2c 20 27 5c 5c 27 29 3b 20 0d 0a 20 20 20 20  g, '\\'); ..    
0f40: 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65              file
0f50: 6e 61 6d 65 20 3d 20 66 69 6c 65 6e 61 6d 65 2e  name = filename.
0f60: 72 65 70 6c 61 63 65 28 2f 22 2f 67 2c 20 27 27  replace(/"/g, ''
0f70: 29 3b 20 2f 2f 46 49 58 4d 45 3a 20 d0 b4 d0 bb  ); //FIXME: ....
0f80: d1 8f 20 d0 bb d0 b8 d0 bd d1 83 d0 ba d1 81 20  .. ............ 
0f90: d0 b2 d0 b5 d1 80 d1 81 d0 b8 d0 b8 20 d1 8d d1  ............ ...
0fa0: 82 d0 be 20 d0 bd d0 b5 d0 bf d1 80 d0 b0 d0 b2  ... ............
0fb0: d0 b8 d0 bb d1 8c d0 bd d0 be 2e 20 0d 0a 09 20  ........... ... 
0fc0: 20 20 20 20 20 20 20 20 20 20 20 73 77 69 74 63             switc
0fd0: 68 20 28 6d 61 74 68 65 73 5b 31 5d 29 20 0d 0a  h (mathes[1]) ..
0fe0: 09 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
0ff0: 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1000: 20 63 61 73 65 20 22 4d 22 3a 0d 0a 09 20 20 20   case "M":...   
1010: 20 20 20 20 20 20 20 20 20 20 20 20 20 d0 a1 d0               ...
1020: be d0 be d1 82 d0 b2 d0 b5 d1 82 d1 81 d1 82 d0  ................
1030: b2 d0 b8 d0 b5 d0 a1 d1 82 d0 b0 d1 82 d1 83 d1  ................
1040: 81 d0 be d0 b2 5b 46 53 4f 2e 42 75 69 6c 64 50  .....[FSO.BuildP
1050: 61 74 68 28 70 61 74 68 54 6f 43 61 74 61 6c 6f  ath(pathToCatalo
1060: 67 2c 20 66 69 6c 65 6e 61 6d 65 29 5d 3d 20 22  g, filename)]= "
1070: 45 44 49 54 45 44 22 0d 0a 09 20 20 20 20 20 20  EDITED"...      
1080: 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b            break;
1090: 0d 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
10a0: 20 20 20 0d 0a 09 20 20 20 20 20 20 20 20 20 20     ...          
10b0: 20 20 20 20 20 20 63 61 73 65 20 22 41 22 3a 0d        case "A":.
10c0: 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10d0: 20 20 d0 a1 d0 be d0 be d1 82 d0 b2 d0 b5 d1 82    ..............
10e0: d1 81 d1 82 d0 b2 d0 b8 d0 b5 d0 a1 d1 82 d0 b0  ................
10f0: d1 82 d1 83 d1 81 d0 be d0 b2 5b 46 53 4f 2e 42  ..........[FSO.B
1100: 75 69 6c 64 50 61 74 68 28 70 61 74 68 54 6f 43  uildPath(pathToC
1110: 61 74 61 6c 6f 67 2c 20 66 69 6c 65 6e 61 6d 65  atalog, filename
1120: 29 5d 3d 20 22 41 44 44 45 44 22 0d 0a 09 20 20  )]= "ADDED"...  
1130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72                br
1140: 65 61 6b 3b 0d 0a 09 20 20 20 20 20 20 20 20 20  eak;...         
1150: 20 20 20 20 20 20 20 0d 0a 09 20 20 20 20 20 20         ...      
1160: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 22            case "
1170: 3f 3f 22 3a 0d 0a 09 20 20 20 20 20 20 20 20 20  ??":...         
1180: 20 20 20 20 20 20 20 d0 a1 d0 be d0 be d1 82 d0         .........
1190: b2 d0 b5 d1 82 d1 81 d1 82 d0 b2 d0 b8 d0 b5 d0  ................
11a0: a1 d1 82 d0 b0 d1 82 d1 83 d1 81 d0 be d0 b2 5b  ...............[
11b0: 46 53 4f 2e 42 75 69 6c 64 50 61 74 68 28 70 61  FSO.BuildPath(pa
11c0: 74 68 54 6f 43 61 74 61 6c 6f 67 2c 20 66 69 6c  thToCatalog, fil
11d0: 65 6e 61 6d 65 29 5d 3d 20 22 4e 4f 54 56 45 52  ename)]= "NOTVER
11e0: 53 49 4f 4e 45 44 22 0d 0a 09 20 20 20 20 20 20  SIONED"...      
11f0: 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b            break;
1200: 0d 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1210: 20 20 20 0d 0a 09 20 20 20 20 20 20 20 20 20 20     ...          
1220: 20 20 20 20 20 20 63 61 73 65 20 22 44 22 3a 0d        case "D":.
1230: 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1240: 20 20 d0 a1 d0 be d0 be d1 82 d0 b2 d0 b5 d1 82    ..............
1250: d1 81 d1 82 d0 b2 d0 b8 d0 b5 d0 a1 d1 82 d0 b0  ................
1260: d1 82 d1 83 d1 81 d0 be d0 b2 5b 46 53 4f 2e 42  ..........[FSO.B
1270: 75 69 6c 64 50 61 74 68 28 70 61 74 68 54 6f 43  uildPath(pathToC
1280: 61 74 61 6c 6f 67 2c 20 66 69 6c 65 6e 61 6d 65  atalog, filename
1290: 29 5d 3d 20 22 44 45 4c 45 54 45 44 22 0d 0a 09  )]= "DELETED"...
12a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12b0: 62 72 65 61 6b 3b 0d 0a 0d 0a 09 20 20 20 20 20  break;.....     
12c0: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
12d0: 22 52 22 3a 0d 0a 09 20 20 20 20 20 20 20 20 20  "R":...         
12e0: 20 20 20 20 20 20 20 d0 a1 d0 be d0 be d1 82 d0         .........
12f0: b2 d0 b5 d1 82 d1 81 d1 82 d0 b2 d0 b8 d0 b5 d0  ................
1300: a1 d1 82 d0 b0 d1 82 d1 83 d1 81 d0 be d0 b2 5b  ...............[
1310: 46 53 4f 2e 42 75 69 6c 64 50 61 74 68 28 70 61  FSO.BuildPath(pa
1320: 74 68 54 6f 43 61 74 61 6c 6f 67 2c 20 66 69 6c  thToCatalog, fil
1330: 65 6e 61 6d 65 29 5d 3d 20 22 72 65 6e 61 6d 65  ename)]= "rename
1340: 22 3b 0d 0a 09 20 20 20 20 20 20 20 20 20 20 20  ";...           
1350: 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 0d 0a 09       break;.....
1360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1370: 63 61 73 65 20 22 43 22 3a 0d 0a 09 20 20 20 20  case "C":...    
1380: 20 20 20 20 20 20 20 20 20 20 20 20 d0 a1 d0 be              ....
1390: d0 be d1 82 d0 b2 d0 b5 d1 82 d1 81 d1 82 d0 b2  ................
13a0: d0 b8 d0 b5 d0 a1 d1 82 d0 b0 d1 82 d1 83 d1 81  ................
13b0: d0 be d0 b2 5b 46 53 4f 2e 42 75 69 6c 64 50 61  ....[FSO.BuildPa
13c0: 74 68 28 70 61 74 68 54 6f 43 61 74 61 6c 6f 67  th(pathToCatalog
13d0: 2c 20 66 69 6c 65 6e 61 6d 65 29 5d 3d 20 22 63  , filename)]= "c
13e0: 6f 70 69 65 64 22 3b 0d 0a 09 20 20 20 20 20 20  opied";...      
13f0: 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b            break;
1400: 0d 0a 0d 0a 09 20 20 20 20 20 20 20 20 20 20 20  .....           
1410: 20 20 20 20 20 63 61 73 65 20 22 55 22 3a 0d 0a       case "U":..
1420: 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1430: 20 d0 a1 d0 be d0 be d1 82 d0 b2 d0 b5 d1 82 d1   ...............
1440: 81 d1 82 d0 b2 d0 b8 d0 b5 d0 a1 d1 82 d0 b0 d1  ................
1450: 82 d1 83 d1 81 d0 be d0 b2 5b 46 53 4f 2e 42 75  .........[FSO.Bu
1460: 69 6c 64 50 61 74 68 28 70 61 74 68 54 6f 43 61  ildPath(pathToCa
1470: 74 61 6c 6f 67 2c 20 66 69 6c 65 6e 61 6d 65 29  talog, filename)
1480: 5d 3d 20 22 75 70 64 61 74 65 22 3b 0d 0a 09 20  ]= "update";... 
1490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
14a0: 72 65 61 6b 3b 0d 0a 09 20 20 20 20 20 20 20 20  reak;...        
14b0: 20 20 20 20 7d 0d 0a 09 20 20 20 20 20 20 20 20      }...        
14c0: 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 09      continue;...
14d0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
14e0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
14f0: 2f 2f 54 4f 44 4f 3a 20 d1 82 d1 83 d1 82 20 d0  //TODO: ...... .
1500: bf d0 be d0 bb d1 83 d1 87 d0 b8 d0 bc 20 d0 b8  ............. ..
1510: d0 bc d1 8f 20 d0 b2 d0 b5 d1 82 d0 ba d0 b8 20  .... .......... 
1520: d1 82 d0 b5 d0 ba d1 83 d1 89 d0 b5 d0 b9 2e 0d  ................
1530: 0a 20 20 20 20 20 20 20 20 76 61 72 20 54 65 78  .        var Tex
1540: 74 44 6f 63 20 3d 20 76 38 4e 65 77 28 22 54 65  tDoc = v8New("Te
1550: 78 74 44 6f 63 75 6d 65 6e 74 22 29 3b 0d 0a 20  xtDocument");.. 
1560: 20 20 20 20 20 20 20 2f 2f 54 65 78 74 44 6f 63         //TextDoc
1570: 2e 57 72 69 74 65 28 74 68 69 73 2e 70 61 74 68  .Write(this.path
1580: 54 6f 54 65 6d 70 4f 75 74 70 75 74 2c 20 22 55  ToTempOutput, "U
1590: 54 46 2d 38 22 29 3b 0d 0a 20 20 20 20 20 20 20  TF-8");..       
15a0: 20 54 65 78 74 44 6f 63 2e 57 72 69 74 65 28 74   TextDoc.Write(t
15b0: 68 69 73 2e 70 61 74 68 54 6f 43 6d 64 2c 20 22  his.pathToCmd, "
15c0: 55 54 46 2d 38 22 29 3b 0d 0a 20 20 20 20 20 20  UTF-8");..      
15d0: 20 20 54 65 78 74 44 6f 63 2e 41 64 64 4c 69 6e    TextDoc.AddLin
15e0: 65 28 27 63 64 20 2f 64 20 22 27 20 2b 70 61 74  e('cd /d "' +pat
15f0: 68 54 6f 43 61 74 61 6c 6f 67 2b 27 22 27 29 3b  hToCatalog+'"');
1600: 0d 0a 20 20 20 20 20 20 20 20 54 65 78 74 44 6f  ..        TextDo
1610: 63 2e 41 64 64 4c 69 6e 65 28 27 67 69 74 20 62  c.AddLine('git b
1620: 72 61 6e 63 68 20 2d 2d 6e 6f 2d 63 6f 6c 6f 72  ranch --no-color
1630: 20 2d 6c 20 3e 20 22 27 2b 74 68 69 73 2e 70 61   -l > "'+this.pa
1640: 74 68 54 6f 54 65 6d 70 4f 75 74 70 75 74 2b 27  thToTempOutput+'
1650: 22 27 29 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f  "');..        //
1660: 54 65 78 74 44 6f 63 2e 57 72 69 74 65 28 74 68  TextDoc.Write(th
1670: 69 73 2e 70 61 74 68 54 6f 43 6d 64 2c 20 22 63  is.pathToCmd, "c
1680: 70 38 36 36 22 29 3b 0d 0a 20 20 20 20 20 20 20  p866");..       
1690: 20 45 72 72 43 6f 64 65 20 3d 20 57 73 68 53 68   ErrCode = WshSh
16a0: 65 6c 6c 2e 52 75 6e 28 27 22 27 2b 74 68 69 73  ell.Run('"'+this
16b0: 2e 70 61 74 68 54 6f 43 6d 64 2b 27 22 27 2c 20  .pathToCmd+'"', 
16c0: 30 2c 20 31 29 3b 0d 0a 20 20 20 20 20 20 20 20  0, 1);..        
16d0: 54 65 78 74 44 6f 63 2e 52 65 61 64 28 74 68 69  TextDoc.Read(thi
16e0: 73 2e 70 61 74 68 54 6f 54 65 6d 70 4f 75 74 70  s.pathToTempOutp
16f0: 75 74 2c 20 22 55 54 46 2d 38 22 29 3b 0d 0a 20  ut, "UTF-8");.. 
1700: 20 20 20 20 20 20 20 69 66 20 28 54 65 78 74 44         if (TextD
1710: 6f 63 2e 4c 69 6e 65 43 6f 75 6e 74 28 29 20 3d  oc.LineCount() =
1720: 3d 20 30 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  = 0) {..        
1730: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
1740: 61 6c 73 65 20 2f 2f d1 87 d1 82 d0 be 20 d1 82  alse //...... ..
1750: d0 be 20 d0 bf d0 be d1 88 d0 bb d0 be 20 d0 bd  .. .......... ..
1760: d0 b5 20 d1 82 d0 b0 d0 ba 2e 20 0d 0a 20 20 20  .. ....... ..   
1770: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1780: 76 61 72 20 69 3d 30 3b 0d 0a 20 20 20 20 20 20  var i=0;..      
1790: 20 20 72 65 20 3d 20 6e 65 77 20 52 65 67 45 78    re = new RegEx
17a0: 70 28 2f 2e 2a 28 5c 2a 29 5c 73 2a 28 2e 2a 29  p(/.*(\*)\s*(.*)
17b0: 2f 29 3b 0d 0a 20 20 20 20 20 20 20 20 66 6f 72  /);..        for
17c0: 20 28 76 61 72 20 69 3d 31 3b 20 69 3c 3d 54 65   (var i=1; i<=Te
17d0: 78 74 44 6f 63 2e 4c 69 6e 65 43 6f 75 6e 74 28  xtDoc.LineCount(
17e0: 29 3b 20 69 2b 2b 29 20 7b 0d 0a 20 20 20 20 20  ); i++) {..     
17f0: 20 20 20 20 20 20 20 76 61 72 20 72 20 3d 20 54         var r = T
1800: 65 78 74 44 6f 63 2e 47 65 74 4c 69 6e 65 28 69  extDoc.GetLine(i
1810: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
1820: 76 61 72 20 6d 61 74 68 65 73 20 3d 20 72 2e 6d  var mathes = r.m
1830: 61 74 63 68 28 72 65 29 3b 0d 0a 20 20 20 20 20  atch(re);..     
1840: 20 20 20 20 20 20 20 69 66 20 28 6d 61 74 68 65         if (mathe
1850: 73 20 26 26 20 6d 61 74 68 65 73 2e 6c 65 6e 67  s && mathes.leng
1860: 74 68 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20  th) {..         
1870: 20 20 20 20 20 20 20 62 72 61 6e 63 68 6e 61 6d         branchnam
1880: 65 20 3d 20 22 22 2b 6d 61 74 68 65 73 5b 32 5d  e = ""+mathes[2]
1890: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
18a0: 20 20 20 d0 a1 d0 be d0 be d1 82 d0 b2 d0 b5 d1     .............
18b0: 82 d1 81 d1 82 d0 b2 d0 b8 d0 b5 d0 a1 d1 82 d0  ................
18c0: b0 d1 82 d1 83 d1 81 d0 be d0 b2 5b 70 61 74 68  ...........[path
18d0: 54 6f 43 61 74 61 6c 6f 67 5d 3d 62 72 61 6e 63  ToCatalog]=branc
18e0: 68 6e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20  hname;..        
18f0: 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a          break;..
1900: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1910: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 09 20 20 20         }.....   
1920: 20 72 65 74 75 72 6e 20 74 72 75 65 0d 0a 09 7d   return true...}
1930: 2c 0d 0a 0d 0a 09 67 65 74 46 69 6c 65 53 74 61  ,.....getFileSta
1940: 74 75 73 20 3a 20 66 75 6e 63 74 69 6f 6e 28 70  tus : function(p
1950: 61 74 68 54 6f 43 61 74 61 6c 6f 67 2c 20 70 61  athToCatalog, pa
1960: 74 68 54 6f 46 69 6c 65 29 7b 0d 0a 09 09 76 61  thToFile){....va
1970: 72 20 d0 bb d0 9a d0 b0 d1 82 d0 b0 d0 bb d0 be  r ..............
1980: d0 b3 20 3d 20 70 61 74 68 54 6f 43 61 74 61 6c  .. = pathToCatal
1990: 6f 67 3b 0d 0a 09 09 76 61 72 20 72 6f 6f 74 43  og;....var rootC
19a0: 61 74 61 6c 6f 67 20 3d 20 74 68 69 73 2e 67 65  atalog = this.ge
19b0: 74 52 6f 6f 74 43 61 74 61 6c 6f 67 28 70 61 74  tRootCatalog(pat
19c0: 68 54 6f 46 69 6c 65 29 3b 0d 0a 0d 0a 09 20 20  hToFile);.....  
19d0: 20 20 d0 a1 d0 be d0 be d1 82 d0 b2 d0 b5 d1 82    ..............
19e0: d1 81 d0 b2 d0 b8 d0 b5 d0 a4 d0 b0 d0 b9 d0 bb  ................
19f0: d0 be d0 b2 20 3d 20 74 68 69 73 2e 43 61 74 61  .... = this.Cata
1a00: 6c 6f 67 41 6e 64 46 69 6c 65 73 53 74 61 74 75  logAndFilesStatu
1a10: 73 5b 72 6f 6f 74 43 61 74 61 6c 6f 67 5d 3b 0d  s[rootCatalog];.
1a20: 0a 09 20 20 20 20 69 66 20 28 d0 a1 d0 be d0 be  ..    if (......
1a30: d1 82 d0 b2 d0 b5 d1 82 d1 81 d0 b2 d0 b8 d0 b5  ................
1a40: d0 a4 d0 b0 d0 b9 d0 bb d0 be d0 b2 20 3d 3d 20  ............ == 
1a50: 75 6e 64 65 66 69 6e 65 64 29 20 72 65 74 75 72  undefined) retur
1a60: 6e 20 6e 75 6c 6c 20 0d 0a 09 20 20 20 20 0d 0a  n null ...    ..
1a70: 09 20 20 20 20 72 65 74 75 72 6e 20 28 d0 a1 d0  .    return (...
1a80: be d0 be d1 82 d0 b2 d0 b5 d1 82 d1 81 d0 b2 d0  ................
1a90: b8 d0 b5 d0 a4 d0 b0 d0 b9 d0 bb d0 be d0 b2 5b  ...............[
1aa0: 70 61 74 68 54 6f 46 69 6c 65 5d 20 3d 3d 20 75  pathToFile] == u
1ab0: 6e 64 65 66 69 6e 65 64 29 20 3f 20 6e 75 6c 6c  ndefined) ? null
1ac0: 20 3a 20 d0 a1 d0 be d0 be d1 82 d0 b2 d0 b5 d1   : .............
1ad0: 82 d1 81 d0 b2 d0 b8 d0 b5 d0 a4 d0 b0 d0 b9 d0  ................
1ae0: bb d0 be d0 b2 5b 70 61 74 68 54 6f 46 69 6c 65  .....[pathToFile
1af0: 5d 0d 0a 09 7d 2c 0d 0a 0d 0a 09 74 65 73 74 20  ]...},.....test 
1b00: 3a 20 66 75 6e 63 74 69 6f 6e 28 70 61 74 68 54  : function(pathT
1b10: 6f 43 61 74 61 6c 6f 67 29 7b 0d 0a 0d 0a 09 20  oCatalog){..... 
1b20: 20 20 20 76 61 72 20 66 20 3d 20 76 38 4e 65 77     var f = v8New
1b30: 28 22 46 69 6c 65 22 2c 20 70 61 74 68 54 6f 43  ("File", pathToC
1b40: 61 74 61 6c 6f 67 29 3b 0d 0a 20 20 20 20 09 69  atalog);..    .i
1b50: 66 20 28 21 66 2e 45 78 69 73 74 28 29 29 20 72  f (!f.Exist()) r
1b60: 65 74 75 72 6e 20 66 61 6c 73 65 3b 20 0d 0a 20  eturn false; .. 
1b70: 20 20 20 09 69 66 20 28 21 66 2e 49 73 44 69 72     .if (!f.IsDir
1b80: 65 63 74 6f 72 79 28 29 29 20 72 65 74 75 72 6e  ectory()) return
1b90: 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 09 76 61   false;..    .va
1ba0: 72 20 66 20 3d 20 76 38 4e 65 77 28 22 46 69 6c  r f = v8New("Fil
1bb0: 65 22 2c 20 46 53 4f 2e 42 75 69 6c 64 50 61 74  e", FSO.BuildPat
1bc0: 68 28 70 61 74 68 54 6f 43 61 74 61 6c 6f 67 2c  h(pathToCatalog,
1bd0: 20 27 2e 67 69 74 27 29 29 3b 0d 0a 20 20 20 20   '.git'));..    
1be0: 09 69 66 20 28 21 66 2e 45 78 69 73 74 28 29 29  .if (!f.Exist())
1bf0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 09 72 65 74   {..        .ret
1c00: 75 72 6e 20 66 61 6c 73 65 0d 0a 20 20 20 20 09  urn false..    .
1c10: 7d 0d 0a 20 20 20 20 09 72 65 74 75 72 6e 20 74  }..    .return t
1c20: 72 75 65 0d 0a 09 7d 2c 0d 0a 0d 0a 20 20 20 20  rue...},....    
1c30: 61 64 64 20 3a 20 66 75 6e 63 74 69 6f 6e 28 70  add : function(p
1c40: 61 74 68 54 6f 46 69 6c 65 2c 20 70 61 72 61 6d  athToFile, param
1c50: 32 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 76 61  2) {..        va
1c60: 72 20 72 6f 6f 74 43 61 74 61 6c 6f 67 20 3d 20  r rootCatalog = 
1c70: 74 68 69 73 2e 67 65 74 52 6f 6f 74 43 61 74 61  this.getRootCata
1c80: 6c 6f 67 28 70 61 74 68 54 6f 46 69 6c 65 29 3b  log(pathToFile);
1c90: 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20 66 20  ..        var f 
1ca0: 3d 20 76 38 4e 65 77 28 22 46 69 6c 65 22 2c 20  = v8New("File", 
1cb0: 70 61 74 68 54 6f 46 69 6c 65 29 3b 0d 0a 20 20  pathToFile);..  
1cc0: 20 20 20 20 20 20 69 66 20 28 66 2e 49 73 44 69        if (f.IsDi
1cd0: 72 65 63 74 6f 72 79 28 29 29 20 7b 0d 0a 20 20  rectory()) {..  
1ce0: 20 20 20 20 20 20 20 20 20 20 70 61 74 68 54 6f            pathTo
1cf0: 46 69 6c 65 20 3d 20 27 2e 27 0d 0a 20 20 20 20  File = '.'..    
1d00: 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a 20 20      } else {..  
1d10: 20 20 20 20 20 20 20 20 20 20 70 61 74 68 54 6f            pathTo
1d20: 46 69 6c 65 20 3d 20 27 22 27 2b 70 61 74 68 54  File = '"'+pathT
1d30: 6f 46 69 6c 65 2b 27 22 27 0d 0a 20 20 20 20 20  oFile+'"'..     
1d40: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 0d 0a     }..        ..
1d50: 20 20 20 20 20 20 20 20 76 61 72 20 54 65 78 74          var Text
1d60: 44 6f 63 20 3d 20 76 38 4e 65 77 28 22 54 65 78  Doc = v8New("Tex
1d70: 74 44 6f 63 75 6d 65 6e 74 22 29 3b 0d 0a 20 20  tDocument");..  
1d80: 20 20 20 20 20 20 54 65 78 74 44 6f 63 2e 41 64        TextDoc.Ad
1d90: 64 4c 69 6e 65 28 27 63 64 20 2f 64 20 22 27 2b  dLine('cd /d "'+
1da0: 72 6f 6f 74 43 61 74 61 6c 6f 67 2b 27 22 27 29  rootCatalog+'"')
1db0: 0d 0a 20 20 20 20 20 20 20 20 54 65 78 74 44 6f  ..        TextDo
1dc0: 63 2e 41 64 64 4c 69 6e 65 28 27 67 69 74 20 61  c.AddLine('git a
1dd0: 64 64 20 27 20 2b 70 61 74 68 54 6f 46 69 6c 65  dd ' +pathToFile
1de0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 54 65 78 74  );..        Text
1df0: 44 6f 63 2e 57 72 69 74 65 28 74 68 69 73 2e 70  Doc.Write(this.p
1e00: 61 74 68 54 6f 43 6d 64 2c 20 27 63 70 38 36 36  athToCmd, 'cp866
1e10: 27 29 3b 0d 0a 20 20 20 20 20 20 20 20 0d 0a 20  ');..        .. 
1e20: 20 20 20 20 20 20 20 54 65 78 74 44 6f 63 2e 43         TextDoc.C
1e30: 6c 65 61 72 28 29 3b 0d 0a 20 20 20 20 20 20 20  lear();..       
1e40: 20 45 72 72 43 6f 64 65 20 3d 20 57 73 68 53 68   ErrCode = WshSh
1e50: 65 6c 6c 2e 52 75 6e 28 27 22 27 2b 74 68 69 73  ell.Run('"'+this
1e60: 2e 70 61 74 68 54 6f 43 6d 64 2b 27 22 27 2c 20  .pathToCmd+'"', 
1e70: 30 2c 20 31 29 0d 0a 20 20 20 20 20 20 20 20 72  0, 1)..        r
1e80: 65 74 75 72 6e 20 45 72 72 43 6f 64 65 0d 0a 20  eturn ErrCode.. 
1e90: 20 20 20 7d 20 2c 0d 0a 0d 0a 20 20 20 20 67 65     } ,....    ge
1ea0: 74 46 69 6c 65 41 74 52 65 76 69 73 69 6f 6e 20  tFileAtRevision 
1eb0: 3a 20 66 75 6e 63 74 69 6f 6e 28 70 61 74 68 54  : function(pathT
1ec0: 6f 46 69 6c 65 2c 20 72 65 76 29 7b 0d 0a 20 20  oFile, rev){..  
1ed0: 20 20 20 20 20 20 76 61 72 20 54 65 78 74 44 6f        var TextDo
1ee0: 63 20 3d 20 76 38 4e 65 77 28 22 54 65 78 74 44  c = v8New("TextD
1ef0: 6f 63 75 6d 65 6e 74 22 29 3b 0d 0a 20 20 20 20  ocument");..    
1f00: 20 20 20 20 54 65 78 74 44 6f 63 2e d0 97 d0 b0      TextDoc.....
1f10: d0 bf d0 b8 d1 81 d0 b0 d1 82 d1 8c 28 74 68 69  ............(thi
1f20: 73 2e 70 61 74 68 54 6f 54 65 6d 70 4f 75 74 70  s.pathToTempOutp
1f30: 75 74 2c 20 22 55 54 46 2d 38 22 29 3b 0d 0a 20  ut, "UTF-8");.. 
1f40: 20 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20         ..       
1f50: 20 76 61 72 20 66 20 3d 20 76 38 4e 65 77 28 22   var f = v8New("
1f60: 46 69 6c 65 22 2c 20 70 61 74 68 54 6f 46 69 6c  File", pathToFil
1f70: 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20  e);..        if 
1f80: 28 21 66 2e 45 78 69 73 74 28 29 29 20 0d 0a 20  (!f.Exist()) .. 
1f90: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1fa0: 20 20 20 20 20 20 4d 65 73 73 61 67 65 28 22 20        Message(" 
1fb0: d1 84 d0 b0 d0 b9 d0 bb d0 b0 20 d1 84 d0 b8 d0  .......... .....
1fc0: b7 d0 b8 d1 87 d0 b5 d1 81 d0 ba d0 b8 20 d0 bd  ............. ..
1fd0: d0 b5 20 d1 81 d1 83 d1 89 d0 b5 d1 81 d1 82 d0  .. .............
1fe0: b2 d1 83 d0 b5 d1 82 2e 2e 2e 22 29 20 0d 0a 20  ..........") .. 
1ff0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2000: 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20  n null;..       
2010: 20 7d 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28   }..        if (
2020: 28 21 72 65 76 29 20 7c 7c 20 28 72 65 76 2e 6c  (!rev) || (rev.l
2030: 65 6e 67 74 68 3d 3d 30 29 29 20 7b 0d 0a 20 20  ength==0)) {..  
2040: 20 20 20 20 20 20 20 20 20 20 72 65 76 20 3d 20            rev = 
2050: 22 48 45 41 44 22 0d 0a 20 20 20 20 20 20 20 20  "HEAD"..        
2060: 7d 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20 72  }..        var r
2070: 6f 6f 74 43 61 74 61 6c 6f 67 20 3d 20 74 68 69  ootCatalog = thi
2080: 73 2e 67 65 74 52 6f 6f 74 43 61 74 61 6c 6f 67  s.getRootCatalog
2090: 28 70 61 74 68 54 6f 46 69 6c 65 29 0d 0a 20 20  (pathToFile)..  
20a0: 20 20 20 20 20 20 69 66 20 28 72 65 76 2e 6c 65        if (rev.le
20b0: 6e 67 74 68 20 21 3d 30 29 20 7b 0d 0a 20 20 20  ngth !=0) {..   
20c0: 20 20 20 20 20 20 20 20 20 76 61 72 20 66 69 6c           var fil
20d0: 65 72 65 76 20 3d 20 46 53 4f 2e 42 75 69 6c 64  erev = FSO.Build
20e0: 50 61 74 68 28 54 65 6d 70 44 69 72 2c 20 72 65  Path(TempDir, re
20f0: 76 2b 66 2e d0 98 d0 bc d1 8f 29 3b 0d 0a 20 20  v+f.......);..  
2100: 20 20 20 20 20 20 20 20 20 20 54 65 78 74 44 6f            TextDo
2110: 63 2e 41 64 64 4c 69 6e 65 28 27 63 64 20 2f 64  c.AddLine('cd /d
2120: 20 22 27 20 2b 72 6f 6f 74 43 61 74 61 6c 6f 67   "' +rootCatalog
2130: 20 2b 27 22 27 29 0d 0a 20 20 20 20 20 20 20 20   +'"')..        
2140: 20 20 20 20 54 65 78 74 44 6f 63 2e 41 64 64 4c      TextDoc.AddL
2150: 69 6e 65 28 27 67 69 74 20 73 68 6f 77 20 2d 2d  ine('git show --
2160: 6e 6f 2d 63 6f 6c 6f 72 20 27 2b 72 65 76 20 2b  no-color '+rev +
2170: 27 3a 22 27 2b 70 61 74 68 54 6f 46 69 6c 65 2e  ':"'+pathToFile.
2180: 72 65 70 6c 61 63 65 28 72 6f 6f 74 43 61 74 61  replace(rootCata
2190: 6c 6f 67 2b 27 5c 5c 27 2c 20 27 27 29 20 2b 27  log+'\\', '') +'
21a0: 22 20 3e 20 27 20 2b 20 66 69 6c 65 72 65 76 29  " > ' + filerev)
21b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 54 65  ..            Te
21c0: 78 74 44 6f 63 2e 57 72 69 74 65 28 74 68 69 73  xtDoc.Write(this
21d0: 2e 70 61 74 68 54 6f 43 6d 64 2c 20 27 63 70 38  .pathToCmd, 'cp8
21e0: 36 36 27 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  66');..         
21f0: 20 20 20 54 65 78 74 44 6f 63 2e 43 6c 65 61 72     TextDoc.Clear
2200: 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
2210: 20 45 72 72 43 6f 64 65 20 3d 20 57 73 68 53 68   ErrCode = WshSh
2220: 65 6c 6c 2e 52 75 6e 28 27 22 27 2b 74 68 69 73  ell.Run('"'+this
2230: 2e 70 61 74 68 54 6f 43 6d 64 2b 27 22 27 2c 20  .pathToCmd+'"', 
2240: 30 2c 20 31 29 0d 0a 20 20 20 20 20 20 20 20 20  0, 1)..         
2250: 20 20 20 72 65 74 75 72 6e 20 66 69 6c 65 72 65     return filere
2260: 76 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  v;..        }.. 
2270: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75         return nu
2280: 6c 6c 0d 0a 20 20 20 20 7d 2c 20 2f 2f 67 65 74  ll..    }, //get
2290: 46 69 6c 65 41 74 52 65 76 69 73 69 6f 6e 0d 0a  FileAtRevision..
22a0: 0d 0a 20 20 20 20 67 65 74 46 69 6c 65 50 61 74  ..    getFilePat
22b0: 68 54 6f 44 69 66 66 20 3a 20 66 75 6e 63 74 69  hToDiff : functi
22c0: 6f 6e 28 70 61 72 61 6d 31 2c 20 70 61 72 61 6d  on(param1, param
22d0: 32 29 20 7b 20 2f 2f d1 82 d0 b5 d0 ba d1 83 d1  2) { //.........
22e0: 89 d0 b0 d1 8f 20 d0 b2 d0 b5 d1 80 d1 81 d0 b8  ..... ..........
22f0: d1 8f 20 d1 84 d0 b0 d0 b9 d0 bb d0 b0 20 d1 81  .. .......... ..
2300: 20 d0 bf d1 80 d0 b5 d0 b4 d1 8b d0 b4 d1 83 d1   ...............
2310: 89 d0 b5 d0 b9 2e 2e 2e 0d 0a 20 20 20 20 20 20  ..........      
2320: 20 20 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20    ..        var 
2330: 54 65 78 74 44 6f 63 20 3d 20 76 38 4e 65 77 28  TextDoc = v8New(
2340: 22 54 65 78 74 44 6f 63 75 6d 65 6e 74 22 29 3b  "TextDocument");
2350: 0d 0a 20 20 20 20 20 20 20 20 54 65 78 74 44 6f  ..        TextDo
2360: 63 2e d0 97 d0 b0 d0 bf d0 b8 d1 81 d0 b0 d1 82  c...............
2370: d1 8c 28 74 68 69 73 2e 70 61 74 68 54 6f 54 65  ..(this.pathToTe
2380: 6d 70 4f 75 74 70 75 74 2c 20 22 55 54 46 2d 38  mpOutput, "UTF-8
2390: 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20  ");..        // 
23a0: d0 b2 d0 be d0 b7 d0 b2 d1 80 d0 b0 d1 89 d0 b0  ................
23b0: d1 82 d1 8c 20 d0 b1 d1 83 d0 b4 d0 b5 d0 bc 20  .... .......... 
23c0: d1 81 d1 82 d1 80 d1 83 d0 ba d1 82 d1 80 d1 83  ................
23d0: 2c 20 70 61 74 68 31 20 d0 b8 20 70 61 74 68 32  , path1 .. path2
23e0: 20 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20 70   ..        var p
23f0: 61 74 68 54 6f 46 69 6c 65 20 3d 20 70 61 72 61  athToFile = para
2400: 6d 31 3b 0d 0a 20 20 20 20 20 20 20 20 76 61 72  m1;..        var
2410: 20 72 6f 6f 74 43 61 74 61 6c 6f 67 20 3d 20 74   rootCatalog = t
2420: 68 69 73 2e 67 65 74 52 6f 6f 74 43 61 74 61 6c  his.getRootCatal
2430: 6f 67 28 70 61 74 68 54 6f 46 69 6c 65 29 3b 0d  og(pathToFile);.
2440: 0a 20 20 20 20 20 20 20 20 70 61 72 61 6d 32 2e  .        param2.
2450: 69 6e 73 65 72 74 28 22 70 61 74 68 31 22 2c 20  insert("path1", 
2460: 70 61 74 68 54 6f 46 69 6c 65 29 3b 0d 0a 20 20  pathToFile);..  
2470: 20 20 20 20 20 20 70 61 72 61 6d 32 2e 69 6e 73        param2.ins
2480: 65 72 74 28 22 70 61 74 68 32 22 2c 20 22 22 29  ert("path2", "")
2490: 3b 0d 0a 20 20 20 20 20 20 20 20 0d 0a 20 20 20  ;..        ..   
24a0: 20 20 20 20 20 76 61 72 20 66 20 3d 20 76 38 4e       var f = v8N
24b0: 65 77 28 22 46 69 6c 65 22 2c 20 70 61 74 68 54  ew("File", pathT
24c0: 6f 46 69 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20  oFile);..       
24d0: 20 69 66 20 28 21 66 2e 45 78 69 73 74 28 29 29   if (!f.Exist())
24e0: 20 72 65 74 75 72 6e 20 66 61 6c 73 65 0d 0a 20   return false.. 
24f0: 20 20 20 20 20 20 20 2f 2f 76 61 72 20 70 61 74         //var pat
2500: 68 32 20 3d 20 47 65 74 54 65 6d 70 46 69 6c 65  h2 = GetTempFile
2510: 4e 61 6d 65 28 66 2e 45 78 74 65 6e 73 69 6f 6e  Name(f.Extension
2520: 2e 73 75 62 73 74 72 28 31 29 29 3b 0d 0a 20 20  .substr(1));..  
2530: 20 20 20 20 20 20 76 61 72 20 70 61 74 68 32 20        var path2 
2540: 3d 20 74 68 69 73 2e 67 65 74 46 69 6c 65 41 74  = this.getFileAt
2550: 52 65 76 69 73 69 6f 6e 28 70 61 74 68 54 6f 46  Revision(pathToF
2560: 69 6c 65 2c 20 22 48 45 41 44 22 29 3b 0d 0a 20  ile, "HEAD");.. 
2570: 20 20 20 20 20 20 20 69 66 20 28 70 61 74 68 32         if (path2
2580: 20 3d 3d 20 6e 75 6c 6c 29 20 7b 0d 0a 20 20 20   == null) {..   
2590: 20 20 20 20 20 20 20 20 20 4d 65 73 73 61 67 65           Message
25a0: 28 22 d0 9d d0 b5 d1 83 d0 b4 d0 b0 d1 87 d0 bd  ("..............
25b0: d0 b0 d1 8f 20 d0 bf d0 be d0 bf d1 8b d1 82 d0  .... ...........
25c0: ba d0 b0 20 d1 81 d0 be d0 b7 d0 b4 d0 b0 d1 82  ... ............
25d0: d1 8c 20 d1 84 d0 b0 d0 b9 d0 bb 20 d1 81 20 d0  .. ........ .. .
25e0: bf d0 be d1 81 d0 bb d0 b5 d0 b4 d0 bd d0 b5 d0  ................
25f0: b9 20 d0 b2 d0 b5 d1 80 d1 81 d0 b8 d0 b5 d0 b9  . ..............
2600: 21 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 20  !");..        } 
2610: 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20  else {..        
2620: 20 20 20 20 2f 2f 20 d0 97 d0 b0 d0 bf d1 83 d1      // .........
2630: 81 d1 82 d0 b8 d0 bc 20 73 68 65 6c 6c 20 d0 b8  ....... shell ..
2640: 20 d0 bd d0 b0 d0 b9 d0 b4 d0 b5 d0 bc 20 d0 b2   ............ ..
2650: d0 b5 d1 80 d1 81 d0 b8 d0 b8 20 d1 84 d0 b0 d0  .......... .....
2660: b9 d0 bb d0 be d0 b2 2e 20 0d 0a 20 20 20 20 20  ........ ..     
2670: 20 20 20 20 20 20 20 76 61 72 20 66 20 3d 20 76         var f = v
2680: 38 4e 65 77 28 22 46 69 6c 65 22 2c 20 70 61 74  8New("File", pat
2690: 68 32 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  h2);..          
26a0: 20 20 69 66 20 28 21 66 2e 45 78 69 73 74 28 29    if (!f.Exist()
26b0: 29 20 7b 20 2f 2f 20 d0 a4 d0 b0 d0 b9 d0 bb 20  ) { // ........ 
26c0: d0 b1 d1 83 d0 b4 d0 b5 d1 82 20 d0 b2 d1 81 d0  .......... .....
26d0: b5 20 d1 80 d0 b0 d0 b2 d0 bd d0 be 2c 20 d0 bd  . .........., ..
26e0: d0 be 20 d0 bf d1 83 d1 81 d1 82 d0 be d0 b9 2e  .. .............
26f0: 20 d0 94 d1 83 d0 bc d0 b0 d1 8e 20 d0 bf d1 80   .......... ....
2700: d0 be d1 81 d1 82 d1 8f d1 82 2e 20 0d 0a 20 20  ........... ..  
2710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 65                Me
2720: 73 73 61 67 65 28 22 d0 9d d0 b5 20 d1 81 d0 be  ssage(".... ....
2730: d0 b7 d0 b4 d0 b0 d0 bb d1 81 d1 8f 20 d1 84 d0  ............ ...
2740: b0 d0 b9 d0 bb 2c 20 d0 b3 d0 b4 d0 b5 2d d1 82  ....., ......-..
2750: d0 be 20 d1 82 d1 83 d1 82 20 d0 be d1 88 d0 b8  .. ...... ......
2760: d0 b1 d0 be d1 87 d0 ba d0 b0 2e 20 22 29 20 3b  ........... ") ;
2770: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 20  ..            } 
2780: 20 20 20 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a     ..        }..
2790: 20 20 20 20 20 20 20 20 70 61 72 61 6d 32 2e 69          param2.i
27a0: 6e 73 65 72 74 28 22 70 61 74 68 32 22 2c 20 70  nsert("path2", p
27b0: 61 74 68 32 29 3b 0d 0a 20 20 20 20 20 20 20 20  ath2);..        
27c0: 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e  ..        return
27d0: 20 74 72 75 65 0d 0a 20 20 20 20 7d 2c 20 2f 2f   true..    }, //
27e0: 67 65 74 46 69 6c 65 50 61 74 68 54 6f 44 69 66  getFilePathToDif
27f0: 66 0d 0a 0d 0a 20 20 20 20 67 65 74 4c 6f 67 20  f....    getLog 
2800: 3a 20 66 75 6e 63 74 69 6f 6e 28 70 61 74 68 54  : function(pathT
2810: 6f 46 69 6c 65 2c 20 6c 69 6d 69 74 29 20 7b 20  oFile, limit) { 
2820: 0d 0a 20 20 20 20 20 20 20 20 2f 2f d0 b5 d1 81  ..        //....
2830: d0 bb d0 b8 20 d0 ba d0 b0 d1 82 d0 b0 d0 bb d0  .... ...........
2840: be d0 b3 2c 20 d1 82 d0 be d0 b3 d0 b4 d0 b0 20  ..., .......... 
2850: d0 b8 d0 bd d1 84 d0 be d1 80 d0 bc d0 b0 d1 86  ................
2860: d0 b8 d1 8f 20 d0 b4 d0 bb d1 8f 20 d0 ba d0 b0  .... ...... ....
2870: d1 82 d0 b0 d0 bb d0 be d0 b3 d0 b0 2c 20 d0 b5  ............, ..
2880: d1 81 d0 bb d0 b8 20 d1 84 d0 b0 d0 b9 d0 bb 2c  ...... ........,
2890: 20 d1 82 d0 be d0 b3 d0 b4 d0 b0 20 d0 bb d0 be   .......... ....
28a0: d0 b3 20 d0 b4 d0 bb d1 8f 20 d1 84 d0 b0 d0 b9  .. ...... ......
28b0: d0 bb d0 b0 2e 20 0d 0a 20 20 20 20 20 20 20 20  ..... ..        
28c0: 2f 2f d0 92 d0 be d0 b7 d0 b2 d1 80 d0 b0 d1 89  //..............
28d0: d0 b0 d0 b5 d0 bc 20 d0 bc d0 b0 d1 81 d1 81 d0  ...... .........
28e0: b8 d0 b2 20 d1 81 d0 be 20 d1 81 d1 82 d1 83 d1  ... .... .......
28f0: 80 d0 ba d1 82 d1 83 d1 80 d0 be d0 b9 3a 0d 0a  .............:..
2900: 20 20 20 20 20 20 20 20 2f 2f 20 61 72 72 61 72          // arrar
2910: 79 5b 30 5d 5b 27 76 65 72 73 69 6f 6e 27 3a 31  y[0]['version':1
2920: 32 32 33 33 33 2c 20 27 63 6f 6d 6d 65 6e 74 27  22333, 'comment'
2930: 3a 22 d0 a7 d0 b5 20 d1 82 d0 be 20 d0 bd d0 b0  :".... .... ....
2940: d0 bf d0 b8 d1 81 d0 b0 d0 bb d0 b8 22 2c 20 27  ............", '
2950: 61 75 74 68 6f 72 27 3a 22 73 6f 73 6e 61 22 2c  author':"sosna",
2960: 20 27 64 61 74 65 27 3a 22 32 30 31 32 2d 30 34   'date':"2012-04
2970: 2d 30 31 22 5d 0d 0a 20 20 20 20 20 20 20 20 76  -01"]..        v
2980: 61 72 20 72 65 73 75 6c 74 20 3d 20 5b 5d 3b 0d  ar result = [];.
2990: 0a 20 20 20 20 20 20 20 20 66 20 3d 20 76 38 4e  .        f = v8N
29a0: 65 77 28 22 46 69 6c 65 22 2c 20 70 61 74 68 54  ew("File", pathT
29b0: 6f 46 69 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20  oFile);..       
29c0: 20 69 66 20 28 21 66 2e 45 78 69 73 74 28 29 29   if (!f.Exist())
29d0: 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d   return result;.
29e0: 0a 20 20 20 20 20 20 20 20 76 61 72 20 72 6f 6f  .        var roo
29f0: 74 43 61 74 61 6c 6f 67 20 3d 20 74 68 69 73 2e  tCatalog = this.
2a00: 67 65 74 52 6f 6f 74 43 61 74 61 6c 6f 67 28 70  getRootCatalog(p
2a10: 61 74 68 54 6f 46 69 6c 65 29 3b 0d 0a 20 20 20  athToFile);..   
2a20: 20 20 20 20 20 76 61 72 20 54 65 78 74 44 6f 63       var TextDoc
2a30: 20 3d 20 76 38 4e 65 77 28 22 54 65 78 74 44 6f   = v8New("TextDo
2a40: 63 75 6d 65 6e 74 22 29 3b 0d 0a 20 20 20 20 20  cument");..     
2a50: 20 20 20 54 65 78 74 44 6f 63 2e 41 64 64 4c 69     TextDoc.AddLi
2a60: 6e 65 28 27 63 64 20 2f 64 20 22 27 2b 72 6f 6f  ne('cd /d "'+roo
2a70: 74 43 61 74 61 6c 6f 67 2b 27 22 27 29 3b 0d 0a  tCatalog+'"');..
2a80: 20 20 20 20 20 20 20 20 76 61 72 20 74 65 78 74          var text
2a90: 4c 69 6d 69 74 20 3d 20 6c 69 6d 69 74 3e 30 3f  Limit = limit>0?
2aa0: 27 2d 27 2b 6c 69 6d 69 74 20 3a 20 27 27 3b 0d  '-'+limit : '';.
2ab0: 0a 20 20 20 20 20 20 20 20 54 65 78 74 44 6f 63  .        TextDoc
2ac0: 2e 41 64 64 4c 69 6e 65 28 27 67 69 74 20 6c 6f  .AddLine('git lo
2ad0: 67 20 2d 2d 64 61 74 65 3d 69 73 6f 20 2d 2d 65  g --date=iso --e
2ae0: 6e 63 6f 64 69 6e 67 3d 55 54 46 2d 38 20 2d 2d  ncoding=UTF-8 --
2af0: 70 72 65 74 74 79 3d 66 6f 72 6d 61 74 3a 22 25  pretty=format:"%
2b00: 25 68 25 25 78 30 39 25 25 61 6e 25 25 78 30 39  %h%%x09%%an%%x09
2b10: 25 25 61 64 25 25 78 30 39 25 25 73 22 20 27 2b  %%ad%%x09%%s" '+
2b20: 74 65 78 74 4c 69 6d 69 74 2b 27 20 27 2b 70 61  textLimit+' '+pa
2b30: 74 68 54 6f 46 69 6c 65 2e 72 65 70 6c 61 63 65  thToFile.replace
2b40: 28 72 6f 6f 74 43 61 74 61 6c 6f 67 2b 27 5c 5c  (rootCatalog+'\\
2b50: 27 2c 20 27 27 29 2b 27 20 3e 22 27 2b 74 68 69  ', '')+' >"'+thi
2b60: 73 2e 70 61 74 68 54 6f 54 65 6d 70 4f 75 74 70  s.pathToTempOutp
2b70: 75 74 2b 27 22 27 29 3b 0d 0a 20 20 20 20 20 20  ut+'"');..      
2b80: 20 20 54 65 78 74 44 6f 63 2e 57 72 69 74 65 28    TextDoc.Write(
2b90: 74 68 69 73 2e 70 61 74 68 54 6f 43 6d 64 2c 20  this.pathToCmd, 
2ba0: 27 63 70 38 36 36 27 29 3b 0d 0a 20 20 20 20 20  'cp866');..     
2bb0: 20 20 20 45 72 72 43 6f 64 65 20 3d 20 57 73 68     ErrCode = Wsh
2bc0: 53 68 65 6c 6c 2e 52 75 6e 28 27 22 27 2b 74 68  Shell.Run('"'+th
2bd0: 69 73 2e 70 61 74 68 54 6f 43 6d 64 2b 27 22 27  is.pathToCmd+'"'
2be0: 2c 20 30 2c 20 31 29 0d 0a 20 20 20 20 20 20 20  , 0, 1)..       
2bf0: 20 54 65 78 74 44 6f 63 2e 43 6c 65 61 72 28 29   TextDoc.Clear()
2c00: 3b 0d 0a 20 20 20 20 20 20 20 20 54 65 78 74 44  ;..        TextD
2c10: 6f 63 2e 52 65 61 64 28 74 68 69 73 2e 70 61 74  oc.Read(this.pat
2c20: 68 54 6f 54 65 6d 70 4f 75 74 70 75 74 2c 20 22  hToTempOutput, "
2c30: 55 54 46 2d 38 22 29 3b 0d 0a 20 20 20 20 20 20  UTF-8");..      
2c40: 20 20 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28    ..        if (
2c50: 54 65 78 74 44 6f 63 2e 4c 69 6e 65 43 6f 75 6e  TextDoc.LineCoun
2c60: 74 28 29 20 3d 3d 20 30 29 20 7b 0d 0a 20 20 20  t() == 0) {..   
2c70: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2c80: 72 65 73 75 6c 74 20 0d 0a 20 20 20 20 20 20 20  result ..       
2c90: 20 7d 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20   }..        var 
2ca0: 69 6e 64 65 78 3d 30 3b 0d 0a 20 20 20 20 20 20  index=0;..      
2cb0: 20 20 66 6f 72 20 28 76 61 72 20 69 3d 31 3b 20    for (var i=1; 
2cc0: 69 3c 3d 54 65 78 74 44 6f 63 2e 4c 69 6e 65 43  i<=TextDoc.LineC
2cd0: 6f 75 6e 74 28 29 3b 20 69 2b 2b 29 0d 0a 20 20  ount(); i++)..  
2ce0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2cf0: 20 20 20 20 20 76 61 72 20 72 20 3d 20 54 65 78       var r = Tex
2d00: 74 44 6f 63 2e 47 65 74 4c 69 6e 65 28 69 29 3b  tDoc.GetLine(i);
2d10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 61  ..            va
2d20: 72 20 72 65 20 3d 20 6e 65 77 20 52 65 67 45 78  r re = new RegEx
2d30: 70 28 2f 5e 28 2e 2a 29 5c 74 28 2e 2a 29 5c 74  p(/^(.*)\t(.*)\t
2d40: 28 2e 2a 29 5c 74 28 2e 2a 29 24 2f 29 3b 0d 0a  (.*)\t(.*)$/);..
2d50: 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20              var 
2d60: 6d 61 74 68 65 73 20 3d 20 72 2e 6d 61 74 63 68  mathes = r.match
2d70: 28 72 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  (re);..         
2d80: 20 20 20 69 66 20 28 6d 61 74 68 65 73 20 26 26     if (mathes &&
2d90: 20 6d 61 74 68 65 73 2e 6c 65 6e 67 74 68 29 20   mathes.length) 
2da0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2db0: 20 20 20 72 65 73 75 6c 74 5b 69 6e 64 65 78 5d     result[index]
2dc0: 20 3d 20 7b 22 76 65 72 73 69 6f 6e 22 3a 6d 61   = {"version":ma
2dd0: 74 68 65 73 5b 31 5d 2c 20 22 63 6f 6d 6d 65 6e  thes[1], "commen
2de0: 74 22 3a 27 27 2b 6d 61 74 68 65 73 5b 34 5d 2c  t":''+mathes[4],
2df0: 20 22 64 61 74 65 22 3a 6d 61 74 68 65 73 5b 33   "date":mathes[3
2e00: 5d 2c 20 22 61 75 74 68 6f 72 22 3a 6d 61 74 68  ], "author":math
2e10: 65 73 5b 32 5d 7d 0d 0a 20 20 20 20 20 20 20 20  es[2]}..        
2e20: 20 20 20 20 20 20 20 20 69 6e 64 65 78 2b 2b 3b          index++;
2e30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
2e40: 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
2e50: 20 20 20 20 2f 2f 20 67 69 74 20 6c 6f 67 20 2d      // git log -
2e60: 2d 64 61 74 65 3d 69 73 6f 20 2d 2d 65 6e 63 6f  -date=iso --enco
2e70: 64 69 6e 67 3d 55 54 46 2d 38 20 2d 2d 70 72 65  ding=UTF-8 --pre
2e80: 74 74 79 3d 66 6f 72 6d 61 74 3a 22 25 68 25 78  tty=format:"%h%x
2e90: 30 39 25 61 6e 25 78 30 39 25 61 64 25 78 30 39  09%an%x09%ad%x09
2ea0: 25 73 22 0d 0a 20 20 20 20 20 20 20 20 72 65 74  %s"..        ret
2eb0: 75 72 6e 20 72 65 73 75 6c 74 3b 20 20 20 20 0d  urn result;    .
2ec0: 0a 20 20 20 20 7d 2c 20 2f 2f 20 67 65 74 4c 6f  .    }, // getLo
2ed0: 67 0d 0a 0d 0a 20 20 20 20 67 65 74 49 6e 66 6f  g....    getInfo
2ee0: 20 3a 20 66 75 6e 63 74 69 6f 6e 28 70 61 74 68   : function(path
2ef0: 54 6f 46 69 6c 65 2c 20 76 65 72 29 7b 0d 0a 0d  ToFile, ver){...
2f00: 0a 20 20 20 20 20 20 20 20 76 61 72 20 72 65 73  .        var res
2f10: 75 6c 74 20 3d 20 7b 22 63 6f 6d 6d 65 6e 74 22  ult = {"comment"
2f20: 3a 22 22 2c 20 22 66 69 6c 65 73 22 3a 5b 5d 7d  :"", "files":[]}
2f30: 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20 72 6f  ..        var ro
2f40: 6f 74 43 61 74 61 6c 6f 67 20 3d 20 74 68 69 73  otCatalog = this
2f50: 2e 67 65 74 52 6f 6f 74 43 61 74 61 6c 6f 67 28  .getRootCatalog(
2f60: 70 61 74 68 54 6f 46 69 6c 65 29 3b 0d 0a 20 20  pathToFile);..  
2f70: 20 20 20 20 20 20 76 61 72 20 54 65 78 74 44 6f        var TextDo
2f80: 63 20 3d 20 76 38 4e 65 77 28 22 54 65 78 74 44  c = v8New("TextD
2f90: 6f 63 75 6d 65 6e 74 22 29 3b 0d 0a 20 20 20 20  ocument");..    
2fa0: 20 20 20 20 54 65 78 74 44 6f 63 2e 41 64 64 4c      TextDoc.AddL
2fb0: 69 6e 65 28 27 63 64 20 2f 64 20 22 27 2b 72 6f  ine('cd /d "'+ro
2fc0: 6f 74 43 61 74 61 6c 6f 67 2b 27 22 27 29 0d 0a  otCatalog+'"')..
2fd0: 20 20 20 20 20 20 20 20 54 65 78 74 44 6f 63 2e          TextDoc.
2fe0: 41 64 64 4c 69 6e 65 28 27 20 67 69 74 20 6c 6f  AddLine(' git lo
2ff0: 67 20 2d 2d 6e 6f 2d 63 6f 6c 6f 72 20 2d 2d 65  g --no-color --e
3000: 6e 63 6f 64 69 6e 67 3d 55 54 46 2d 38 20 2d 2d  ncoding=UTF-8 --
3010: 72 61 77 20 2d 2d 64 61 74 65 3d 69 73 6f 20 2d  raw --date=iso -
3020: 2d 70 72 65 74 74 79 3d 66 75 6c 6c 65 72 20 2d  -pretty=fuller -
3030: 2d 70 61 72 65 6e 74 73 20 2d 31 20 27 2b 76 65  -parents -1 '+ve
3040: 72 20 2b 27 20 3e 20 22 27 2b 74 68 69 73 2e 70  r +' > "'+this.p
3050: 61 74 68 54 6f 54 65 6d 70 4f 75 74 70 75 74 2b  athToTempOutput+
3060: 27 22 27 29 0d 0a 20 20 20 20 20 20 20 20 54 65  '"')..        Te
3070: 78 74 44 6f 63 2e 57 72 69 74 65 28 74 68 69 73  xtDoc.Write(this
3080: 2e 70 61 74 68 54 6f 43 6d 64 2c 20 27 63 70 38  .pathToCmd, 'cp8
3090: 36 36 27 29 3b 0d 0a 20 20 20 20 20 20 20 20 45  66');..        E
30a0: 72 72 43 6f 64 65 20 3d 20 57 73 68 53 68 65 6c  rrCode = WshShel
30b0: 6c 2e 52 75 6e 28 27 22 27 2b 74 68 69 73 2e 70  l.Run('"'+this.p
30c0: 61 74 68 54 6f 43 6d 64 2b 27 22 27 2c 20 30 2c  athToCmd+'"', 0,
30d0: 20 31 29 0d 0a 20 20 20 20 20 20 20 20 54 65 78   1)..        Tex
30e0: 74 44 6f 63 2e 43 6c 65 61 72 28 29 3b 0d 0a 20  tDoc.Clear();.. 
30f0: 20 20 20 20 20 20 20 54 65 78 74 44 6f 63 2e 52         TextDoc.R
3100: 65 61 64 28 74 68 69 73 2e 70 61 74 68 54 6f 54  ead(this.pathToT
3110: 65 6d 70 4f 75 74 70 75 74 2c 20 22 55 54 46 2d  empOutput, "UTF-
3120: 38 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 69 66  8");..        if
3130: 20 28 54 65 78 74 44 6f 63 2e 4c 69 6e 65 43 6f   (TextDoc.LineCo
3140: 75 6e 74 28 29 20 3d 3d 20 30 29 20 7b 0d 0a 20  unt() == 0) {.. 
3150: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
3160: 6e 20 72 65 73 75 6c 74 20 0d 0a 20 20 20 20 20  n result ..     
3170: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 76 61     }..        va
3180: 72 20 69 6e 64 65 78 3d 30 3b 0d 0a 20 20 20 20  r index=0;..    
3190: 20 20 20 20 66 6f 72 20 28 76 61 72 20 69 3d 31      for (var i=1
31a0: 3b 20 69 3c 3d 54 65 78 74 44 6f 63 2e 4c 69 6e  ; i<=TextDoc.Lin
31b0: 65 43 6f 75 6e 74 28 29 3b 20 69 2b 2b 29 0d 0a  eCount(); i++)..
31c0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
31d0: 20 20 20 20 20 20 20 76 61 72 20 72 20 3d 20 54         var r = T
31e0: 65 78 74 44 6f 63 2e 47 65 74 4c 69 6e 65 28 69  extDoc.GetLine(i
31f0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
3200: 72 65 5f 66 69 6c 65 73 20 3d 20 6e 65 77 20 52  re_files = new R
3210: 65 67 45 78 70 28 2f 5e 3a 5c 64 2b 5c 73 2b 5c  egExp(/^:\d+\s+\
3220: 64 2b 5c 73 2b 5b 30 2d 39 61 2d 66 2e 5d 2b 5c  d+\s+[0-9a-f.]+\
3230: 73 2b 5b 30 2d 39 61 2d 66 2e 5d 2b 5c 73 2b 28  s+[0-9a-f.]+\s+(
3240: 5c 77 29 5c 74 28 2e 2b 29 24 2f 29 3b 0d 0a 20  \w)\t(.+)$/);.. 
3250: 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 6d             var m
3260: 61 74 68 65 73 20 3d 20 72 2e 6d 61 74 63 68 28  athes = r.match(
3270: 72 65 5f 66 69 6c 65 73 29 3b 0d 0a 20 20 20 20  re_files);..    
3280: 20 20 20 20 20 20 20 20 69 66 20 28 6d 61 74 68          if (math
3290: 65 73 20 26 26 20 6d 61 74 68 65 73 2e 6c 65 6e  es && mathes.len
32a0: 67 74 68 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  gth) {..        
32b0: 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 5b 27          result['
32c0: 66 69 6c 65 73 27 5d 5b 69 6e 64 65 78 5d 20 3d  files'][index] =
32d0: 20 7b 22 76 65 72 73 69 6f 6e 22 3a 76 65 72 2c   {"version":ver,
32e0: 20 22 66 69 6c 65 22 3a 27 27 2b 6d 61 74 68 65   "file":''+mathe
32f0: 73 5b 32 5d 2c 20 22 73 74 61 74 75 73 22 3a 6d  s[2], "status":m
3300: 61 74 68 65 73 5b 31 5d 2c 20 22 66 75 6c 6c 70  athes[1], "fullp
3310: 61 74 68 22 3a 46 53 4f 2e 42 75 69 6c 64 50 61  ath":FSO.BuildPa
3320: 74 68 28 72 6f 6f 74 43 61 74 61 6c 6f 67 2c 20  th(rootCatalog, 
3330: 6d 61 74 68 65 73 5b 32 5d 2e 72 65 70 6c 61 63  mathes[2].replac
3340: 65 28 2f 5c 2f 2f 67 2c 20 27 5c 5c 27 29 29 7d  e(/\//g, '\\'))}
3350: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3360: 20 20 69 6e 64 65 78 2b 2b 3b 0d 0a 20 20 20 20    index++;..    
3370: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
3380: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 72 65     }..        re
3390: 73 75 6c 74 5b 22 63 6f 6d 6d 65 6e 74 22 5d 20  sult["comment"] 
33a0: 3d 20 54 65 78 74 44 6f 63 2e 47 65 74 54 65 78  = TextDoc.GetTex
33b0: 74 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  t();....        
33c0: 72 65 74 75 72 6e 20 72 65 73 75 6c 74 0d 0a 20  return result.. 
33d0: 20 20 20 7d 2c 0d 0a 0d 0a 20 20 20 20 63 6f 6d     },....    com
33e0: 6d 69 74 20 3a 20 66 75 6e 63 74 69 6f 6e 28 70  mit : function(p
33f0: 61 74 68 54 6f 46 69 6c 65 2c 20 6d 65 73 73 61  athToFile, messa
3400: 67 65 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 76  ge) {..        v
3410: 61 72 20 72 6f 6f 74 43 61 74 61 6c 6f 67 20 3d  ar rootCatalog =
3420: 20 74 68 69 73 2e 67 65 74 52 6f 6f 74 43 61 74   this.getRootCat
3430: 61 6c 6f 67 28 70 61 74 68 54 6f 46 69 6c 65 29  alog(pathToFile)
3440: 3b 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20 74  ;..        var t
3450: 65 6d 70 66 69 6c 65 20 3d 20 47 65 74 54 65 6d  empfile = GetTem
3460: 70 46 69 6c 65 4e 61 6d 65 28 22 74 78 74 22 29  pFileName("txt")
3470: 3b 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20 66  ;..        var f
3480: 20 3d 20 76 38 4e 65 77 28 22 46 69 6c 65 22 2c   = v8New("File",
3490: 20 70 61 74 68 54 6f 46 69 6c 65 29 3b 0d 0a 20   pathToFile);.. 
34a0: 20 20 20 20 20 20 20 69 66 20 28 66 2e 49 73 44         if (f.IsD
34b0: 69 72 65 63 74 6f 72 79 28 29 29 20 7b 0d 0a 20  irectory()) {.. 
34c0: 20 20 20 20 20 20 20 20 20 20 20 70 61 74 68 54             pathT
34d0: 6f 46 69 6c 65 20 3d 20 27 20 2d 61 27 0d 0a 20  oFile = ' -a'.. 
34e0: 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 20         } else { 
34f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 61  ..            pa
3500: 74 68 54 6f 46 69 6c 65 20 3d 20 27 22 27 2b 70  thToFile = '"'+p
3510: 61 74 68 54 6f 46 69 6c 65 2e 72 65 70 6c 61 63  athToFile.replac
3520: 65 28 72 6f 6f 74 43 61 74 61 6c 6f 67 2b 27 5c  e(rootCatalog+'\
3530: 5c 27 2c 20 27 27 29 2b 27 22 27 0d 0a 20 20 20  \', '')+'"'..   
3540: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
3550: 76 61 72 20 54 65 78 74 44 6f 63 20 3d 20 76 38  var TextDoc = v8
3560: 4e 65 77 28 22 54 65 78 74 44 6f 63 75 6d 65 6e  New("TextDocumen
3570: 74 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 54 65  t");..        Te
3580: 78 74 44 6f 63 2e 57 72 69 74 65 28 74 68 69 73  xtDoc.Write(this
3590: 2e 70 61 74 68 54 6f 43 6d 64 29 3b 0d 0a 20 20  .pathToCmd);..  
35a0: 20 20 20 20 20 20 54 65 78 74 44 6f 63 2e 41 64        TextDoc.Ad
35b0: 64 4c 69 6e 65 28 27 63 64 20 2f 64 20 22 27 2b  dLine('cd /d "'+
35c0: 72 6f 6f 74 43 61 74 61 6c 6f 67 2b 27 22 27 29  rootCatalog+'"')
35d0: 0d 0a 20 20 20 20 20 20 20 20 54 65 78 74 44 6f  ..        TextDo
35e0: 63 2e 41 64 64 4c 69 6e 65 28 27 67 69 74 20 63  c.AddLine('git c
35f0: 6f 6d 6d 69 74 20 27 20 2b 70 61 74 68 54 6f 46  ommit ' +pathToF
3600: 69 6c 65 2b 27 20 2d 2d 66 69 6c 65 3d 22 27 2b  ile+' --file="'+
3610: 74 65 6d 70 66 69 6c 65 2b 27 22 27 29 3b 0d 0a  tempfile+'"');..
3620: 20 20 20 20 20 20 20 20 54 65 78 74 44 6f 63 2e          TextDoc.
3630: 41 64 64 4c 69 6e 65 28 27 65 78 69 74 27 29 3b  AddLine('exit');
3640: 0d 0a 20 20 20 20 20 20 20 20 0d 0a 20 20 20 20  ..        ..    
3650: 20 20 20 20 54 65 78 74 44 6f 63 2e 57 72 69 74      TextDoc.Writ
3660: 65 28 74 68 69 73 2e 70 61 74 68 54 6f 43 6d 64  e(this.pathToCmd
3670: 2c 20 27 63 70 38 36 36 27 29 3b 0d 0a 20 20 20  , 'cp866');..   
3680: 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20 54       ..        T
3690: 65 78 74 44 6f 63 2e 43 6c 65 61 72 28 29 3b 0d  extDoc.Clear();.
36a0: 0a 20 20 20 20 20 20 20 20 54 65 78 74 44 6f 63  .        TextDoc
36b0: 2e 53 65 74 54 65 78 74 28 6d 65 73 73 61 67 65  .SetText(message
36c0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 54 65 78 74  );..        Text
36d0: 44 6f 63 2e 57 72 69 74 65 28 74 65 6d 70 66 69  Doc.Write(tempfi
36e0: 6c 65 2c 20 27 55 54 46 2d 38 27 29 3b 0d 0a 20  le, 'UTF-8');.. 
36f0: 20 20 20 20 20 20 20 45 72 72 43 6f 64 65 20 3d         ErrCode =
3700: 20 57 73 68 53 68 65 6c 6c 2e 52 75 6e 28 27 22   WshShell.Run('"
3710: 27 2b 74 68 69 73 2e 70 61 74 68 54 6f 43 6d 64  '+this.pathToCmd
3720: 2b 27 22 27 2c 20 31 2c 20 31 29 0d 0a 20 20 20  +'"', 1, 1)..   
3730: 20 20 20 20 20 72 65 74 75 72 6e 20 45 72 72 43       return ErrC
3740: 6f 64 65 0d 0a 20 20 20 20 7d 2c 20 2f 2f 63 6f  ode..    }, //co
3750: 6d 6d 69 74 0d 0a 0d 0a 0d 0a 0d 0a 20 20 20 20  mmit........    
3760: 72 75 6e 20 3a 20 66 75 6e 63 74 69 6f 6e 28 70  run : function(p
3770: 61 74 68 54 6f 46 69 6c 65 29 7b 0d 0a 20 20 20  athToFile){..   
3780: 20 20 20 20 20 76 61 72 20 72 6f 6f 74 43 61 74       var rootCat
3790: 61 6c 6f 67 20 3d 20 74 68 69 73 2e 67 65 74 52  alog = this.getR
37a0: 6f 6f 74 43 61 74 61 6c 6f 67 28 70 61 74 68 54  ootCatalog(pathT
37b0: 6f 46 69 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20  oFile);..       
37c0: 20 76 61 72 20 54 65 78 74 44 6f 63 20 3d 20 76   var TextDoc = v
37d0: 38 4e 65 77 28 22 54 65 78 74 44 6f 63 75 6d 65  8New("TextDocume
37e0: 6e 74 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 54  nt");..        T
37f0: 65 78 74 44 6f 63 2e 41 64 64 4c 69 6e 65 28 27  extDoc.AddLine('
3800: 63 64 20 2f 64 20 22 27 2b 72 6f 6f 74 43 61 74  cd /d "'+rootCat
3810: 61 6c 6f 67 2b 27 22 27 29 3b 0d 0a 20 20 20 20  alog+'"');..    
3820: 20 20 20 20 54 65 78 74 44 6f 63 2e 41 64 64 4c      TextDoc.AddL
3830: 69 6e 65 28 27 73 74 61 72 74 20 63 6d 64 2e 65  ine('start cmd.e
3840: 78 65 27 29 0d 0a 20 20 20 20 20 20 20 20 54 65  xe')..        Te
3850: 78 74 44 6f 63 2e 57 72 69 74 65 28 74 68 69 73  xtDoc.Write(this
3860: 2e 70 61 74 68 54 6f 43 6d 64 2c 20 27 63 70 38  .pathToCmd, 'cp8
3870: 36 36 27 29 3b 0d 0a 20 20 20 20 0d 0a 20 20 20  66');..    ..   
3880: 20 20 20 20 20 d0 97 d0 b0 d0 bf d1 83 d1 81 d1       ...........
3890: 82 d0 b8 d1 82 d1 8c d0 9f d1 80 d0 b8 d0 bb d0  ................
38a0: be d0 b6 d0 b5 d0 bd d0 b8 d0 b5 28 74 68 69 73  ...........(this
38b0: 2e 70 61 74 68 54 6f 43 6d 64 2c 20 22 22 2c 20  .pathToCmd, "", 
38c0: 74 72 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  true);..        
38d0: 54 65 78 74 44 6f 63 20 3d 20 6e 75 6c 6c 3b 0d  TextDoc = null;.
38e0: 0a 20 20 20 20 7d 20 2f 2f 72 75 6e 0d 0a 0d 0a  .    } //run....
38f0: 0d 0a 0d 0a 7d 29 3b 20 2f 2f 20 0d 0a 0d 0a 0d  ....}); // .....
3900: 0a 66 75 6e 63 74 69 6f 6e 20 62 61 63 6b 65 6e  .function backen
3910: 64 5f 67 69 74 20 28 63 6f 6d 6d 61 6e 64 2c 20  d_git (command, 
3920: 70 61 72 61 6d 31 2c 20 70 61 72 61 6d 32 29 20  param1, param2) 
3930: 7b 0d 0a 20 20 20 20 76 61 72 20 72 65 73 75 6c  {..    var resul
3940: 74 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  t = false;..    
3950: 67 69 74 20 3d 20 47 65 74 42 61 63 6b 65 6e 64  git = GetBackend
3960: 47 69 74 28 29 3b 0d 0a 0d 0a 20 20 20 20 73 77  Git();....    sw
3970: 69 74 63 68 20 28 63 6f 6d 6d 61 6e 64 29 20 0d  itch (command) .
3980: 0a 20 20 20 20 7b 0d 0a 20 20 20 20 63 61 73 65  .    {..    case
3990: 20 22 43 41 54 41 4c 4f 47 53 54 41 54 55 53 22   "CATALOGSTATUS"
39a0: 3a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 d0 94  :..        // ..
39b0: d0 be d0 b1 d0 b0 d0 b2 d0 bb d1 8f d0 b5 d0 bc  ................
39c0: 20 d0 b2 20 d1 85 d0 b2 d0 be d1 81 d1 82 20 d0   .. .......... .
39d0: bf d0 be d0 b4 d0 bf d0 b8 d1 81 d1 8c 2e 0d 0a  ................
39e0: 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20 3d          result =
39f0: 20 67 69 74 2e 67 65 74 53 74 61 74 75 73 46 6f   git.getStatusFo
3a00: 72 43 61 74 61 6c 6f 67 28 70 61 72 61 6d 31 2c  rCatalog(param1,
3a10: 20 22 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 62   "");..        b
3a20: 72 65 61 6b 3b 0d 0a 20 20 20 20 63 61 73 65 20  reak;..    case 
3a30: 22 46 49 4c 45 53 54 41 54 55 53 22 3a 0d 0a 20  "FILESTATUS":.. 
3a40: 20 20 20 09 72 65 73 75 6c 74 20 3d 20 67 69 74     .result = git
3a50: 2e 67 65 74 46 69 6c 65 53 74 61 74 75 73 28 70  .getFileStatus(p
3a60: 61 72 61 6d 31 2c 20 70 61 72 61 6d 32 29 3b 0d  aram1, param2);.
3a70: 0a 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d  .        break;.
3a80: 0a 20 20 20 20 63 61 73 65 20 22 54 45 53 54 22  .    case "TEST"
3a90: 3a 0d 0a 20 20 20 20 20 20 20 20 72 65 73 75 6c  :..        resul
3aa0: 74 20 3d 20 67 69 74 2e 74 65 73 74 28 70 61 72  t = git.test(par
3ab0: 61 6d 31 29 3b 0d 0a 20 20 20 20 20 20 20 20 62  am1);..        b
3ac0: 72 65 61 6b 3b 0d 0a 20 20 20 20 63 61 73 65 20  reak;..    case 
3ad0: 22 41 44 44 22 3a 0d 0a 20 20 20 20 20 20 20 20  "ADD":..        
3ae0: 72 65 73 75 6c 74 20 3d 20 67 69 74 2e 61 64 64  result = git.add
3af0: 28 70 61 72 61 6d 31 2c 20 70 61 72 61 6d 32 29  (param1, param2)
3b00: 0d 0a 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b  ..        break;
3b10: 0d 0a 20 20 20 20 63 61 73 65 20 22 47 45 54 46  ..    case "GETF
3b20: 49 4c 45 41 54 52 45 56 49 53 49 4f 4e 22 3a 0d  ILEATREVISION":.
3b30: 0a 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20  .        result 
3b40: 3d 20 67 69 74 2e 67 65 74 46 69 6c 65 41 74 52  = git.getFileAtR
3b50: 65 76 69 73 69 6f 6e 28 70 61 72 61 6d 31 2c 20  evision(param1, 
3b60: 70 61 72 61 6d 32 29 3b 0d 0a 20 20 20 20 20 20  param2);..      
3b70: 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 63 61    break;..    ca
3b80: 73 65 20 22 53 48 4f 57 44 49 46 46 22 3a 0d 0a  se "SHOWDIFF":..
3b90: 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20 3d          result =
3ba0: 20 67 69 74 2e 67 65 74 46 69 6c 65 50 61 74 68   git.getFilePath
3bb0: 54 6f 44 69 66 66 28 70 61 72 61 6d 31 2c 20 70  ToDiff(param1, p
3bc0: 61 72 61 6d 32 29 3b 0d 0a 20 20 20 20 20 20 20  aram2);..       
3bd0: 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 63 61 73   break;..    cas
3be0: 65 20 22 47 45 54 4c 4f 47 22 3a 0d 0a 20 20 20  e "GETLOG":..   
3bf0: 20 20 20 20 20 72 65 73 75 6c 74 20 3d 20 67 69       result = gi
3c00: 74 2e 67 65 74 4c 6f 67 28 70 61 72 61 6d 31 2c  t.getLog(param1,
3c10: 20 70 61 72 61 6d 32 29 3b 0d 0a 20 20 20 20 20   param2);..     
3c20: 20 20 20 62 72 65 61 6b 0d 0a 20 20 20 20 63 61     break..    ca
3c30: 73 65 20 22 47 45 54 49 4e 46 4f 22 3a 0d 0a 20  se "GETINFO":.. 
3c40: 20 20 20 20 20 20 20 72 65 73 75 6c 74 20 3d 20         result = 
3c50: 67 69 74 2e 67 65 74 49 6e 66 6f 28 70 61 72 61  git.getInfo(para
3c60: 6d 31 2c 20 70 61 72 61 6d 32 29 3b 0d 0a 20 20  m1, param2);..  
3c70: 20 20 20 20 20 20 62 72 65 61 6b 0d 0a 20 20 20        break..   
3c80: 20 63 61 73 65 20 22 43 4f 4d 4d 49 54 22 3a 0d   case "COMMIT":.
3c90: 0a 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20  .        result 
3ca0: 3d 20 67 69 74 2e 63 6f 6d 6d 69 74 28 70 61 72  = git.commit(par
3cb0: 61 6d 31 2c 20 70 61 72 61 6d 32 29 3b 0d 0a 20  am1, param2);.. 
3cc0: 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20         break;.. 
3cd0: 20 20 20 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20     ..    }..    
3ce0: 72 65 74 75 72 6e 20 72 65 73 75 6c 74 0d 0a 7d  return result..}
3cf0: 20 2f 2f 42 61 63 6b 65 6e 64 5f 62 7a 72 0d 0a   //Backend_bzr..
3d00: 0d 0a 66 75 6e 63 74 69 6f 6e 20 47 65 74 42 61  ..function GetBa
3d10: 63 6b 65 6e 64 28 29 20 7b 0d 0a 20 20 20 20 72  ckend() {..    r
3d20: 65 74 75 72 6e 20 62 61 63 6b 65 6e 64 5f 67 69  eturn backend_gi
3d30: 74 0d 0a 7d 20 2f 2f 47 65 74 42 61 63 6b 65 6e  t..} //GetBacken
3d40: 64 0d 0a 0d 0a 66 75 6e 63 74 69 6f 6e 20 47 65  d....function Ge
3d50: 74 42 61 63 6b 65 6e 64 47 69 74 28 29 20 7b 0d  tBackendGit() {.
3d60: 0a 20 20 20 20 69 66 20 28 21 42 61 63 6b 65 6e  .    if (!Backen
3d70: 64 47 69 74 2e 5f 69 6e 73 74 61 6e 63 65 29 0d  dGit._instance).
3d80: 0a 20 20 20 20 20 20 20 20 6e 65 77 20 42 61 63  .        new Bac
3d90: 6b 65 6e 64 47 69 74 28 29 3b 0d 0a 20 20 20 20  kendGit();..    
3da0: 0d 0a 20 20 20 20 72 65 74 75 72 6e 20 42 61 63  ..    return Bac
3db0: 6b 65 6e 64 47 69 74 2e 5f 69 6e 73 74 61 6e 63  kendGit._instanc
3dc0: 65 3b 0d 0a 7d 0d 0a 0d 0a                       e;..}....