Hex Artifact Content Вы: nobody
Вход

Artifact baf0ad357dfe7820d647fddab023c1078d34f1da:


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 73 74 64 6c 69 62  cript)....stdlib
0130: 2e 72 65 71 75 69 72 65 28 27 6c 6f 67 34 6a 73  .require('log4js
0140: 2e 6a 73 27 2c 20 53 65 6c 66 53 63 72 69 70 74  .js', SelfScript
0150: 29 3b 0d 0a 0d 0a 76 61 72 20 6c 6f 67 67 65 72  );....var logger
0160: 20 3d 20 4c 6f 67 34 6a 73 2e 67 65 74 4c 6f 67   = Log4js.getLog
0170: 67 65 72 28 53 65 6c 66 53 63 72 69 70 74 2e 75  ger(SelfScript.u
0180: 6e 69 71 75 65 4e 61 6d 65 29 3b 0d 0a 76 61 72  niqueName);..var
0190: 20 61 70 70 65 6e 64 65 72 20 3d 20 6e 65 77 20   appender = new 
01a0: 4c 6f 67 34 6a 73 2e 42 72 6f 77 73 65 72 43 6f  Log4js.BrowserCo
01b0: 6e 73 6f 6c 65 41 70 70 65 6e 64 65 72 28 29 3b  nsoleAppender();
01c0: 0d 0a 61 70 70 65 6e 64 65 72 2e 73 65 74 4c 61  ..appender.setLa
01d0: 79 6f 75 74 28 6e 65 77 20 4c 6f 67 34 6a 73 2e  yout(new Log4js.
01e0: 50 61 74 74 65 72 6e 4c 61 79 6f 75 74 28 4c 6f  PatternLayout(Lo
01f0: 67 34 6a 73 2e 50 61 74 74 65 72 6e 4c 61 79 6f  g4js.PatternLayo
0200: 75 74 2e 54 54 43 43 5f 43 4f 4e 56 45 52 53 49  ut.TTCC_CONVERSI
0210: 4f 4e 5f 50 41 54 54 45 52 4e 29 29 3b 0d 0a 6c  ON_PATTERN));..l
0220: 6f 67 67 65 72 2e 61 64 64 41 70 70 65 6e 64 65  ogger.addAppende
0230: 72 28 61 70 70 65 6e 64 65 72 29 3b 0d 0a 6c 6f  r(appender);..lo
0240: 67 67 65 72 2e 73 65 74 4c 65 76 65 6c 28 4c 6f  gger.setLevel(Lo
0250: 67 34 6a 73 2e 4c 65 76 65 6c 2e 45 52 52 4f 52  g4js.Level.ERROR
0260: 29 3b 0d 0a 0d 0a 76 61 72 20 6d 61 69 6e 46 6f  );....var mainFo
0270: 6c 64 65 72 20 3d 20 73 74 64 6c 69 62 2e 67 65  lder = stdlib.ge
0280: 74 53 6e 65 67 6f 70 61 74 4d 61 69 6e 46 6f 6c  tSnegopatMainFol
0290: 64 65 72 28 29 3b 0d 0a 0d 0a 76 61 72 20 46 53  der();....var FS
02a0: 4f 20 3d 20 6e 65 77 20 41 63 74 69 76 65 58 4f  O = new ActiveXO
02b0: 62 6a 65 63 74 28 22 53 63 72 69 70 74 69 6e 67  bject("Scripting
02c0: 2e 46 69 6c 65 53 79 73 74 65 6d 4f 62 6a 65 63  .FileSystemObjec
02d0: 74 22 29 3b 0d 0a 76 61 72 20 57 73 68 53 68 65  t");..var WshShe
02e0: 6c 6c 20 3d 20 6e 65 77 20 41 63 74 69 76 65 58  ll = new ActiveX
02f0: 4f 62 6a 65 63 74 28 22 57 53 63 72 69 70 74 2e  Object("WScript.
0300: 53 68 65 6c 6c 22 29 3b 0d 0a 76 61 72 20 54 65  Shell");..var Te
0310: 6d 70 44 69 72 20 3d 20 57 73 68 53 68 65 6c 6c  mpDir = WshShell
0320: 2e 45 78 70 61 6e 64 45 6e 76 69 72 6f 6e 6d 65  .ExpandEnvironme
0330: 6e 74 53 74 72 69 6e 67 73 28 22 25 74 65 6d 70  ntStrings("%temp
0340: 25 22 29 20 2b 20 22 5c 5c 22 3b 0d 0a 0d 0a 42  %") + "\\";....B
0350: 61 63 6b 65 6e 64 47 69 74 20 3d 20 73 74 64 6c  ackendGit = stdl
0360: 69 62 2e 43 6c 61 73 73 2e 65 78 74 65 6e 64 28  ib.Class.extend(
0370: 7b 0d 0a 0d 0a 20 20 20 20 63 6f 6e 73 74 72 75  {....    constru
0380: 63 74 20 3a 20 66 75 6e 63 74 69 6f 6e 28 29 20  ct : function() 
0390: 7b 0d 0a 20 20 20 20 20 20 20 20 74 68 69 73 2e  {..        this.
03a0: 6d 61 69 6e 46 6f 6c 64 65 72 20 3d 20 6d 61 69  mainFolder = mai
03b0: 6e 46 6f 6c 64 65 72 3b 0d 0a 20 20 20 20 20 20  nFolder;..      
03c0: 20 20 74 68 69 73 2e 70 61 74 68 54 6f 42 69 6e    this.pathToBin
03d0: 20 3d 20 22 67 69 74 22 3b 0d 0a 20 20 20 20 20   = "git";..     
03e0: 20 20 20 74 68 69 73 2e 43 61 74 61 6c 6f 67 41     this.CatalogA
03f0: 6e 64 46 69 6c 65 73 53 74 61 74 75 73 20 3d 20  ndFilesStatus = 
0400: 5b 5d 3b 0d 0a 20 20 20 20 20 20 74 68 69 73 2e  [];..      this.
0410: 70 61 74 68 54 6f 54 65 6d 70 4f 75 74 70 75 74  pathToTempOutput
0420: 20 3d 20 54 65 6d 70 44 69 72 2b 22 67 69 74 73   = TempDir+"gits
0430: 74 61 74 75 73 2e 74 78 74 22 20 2f 2f 20 d0 9f  tatus.txt" // ..
0440: d0 b8 d1 88 d0 b5 d0 bc 20 31 d0 a1 20 d1 84 d0  ........ 1.. ...
0450: b0 d0 b9 d0 bb 20 d0 b2 20 75 74 66 2d 38 2c 20  ..... .. utf-8, 
0460: d0 b2 d1 8b d0 b2 d0 be d0 b4 d0 b8 d0 bc 20 d1  .............. .
0470: 82 d1 83 d0 b4 d0 b0 20 d1 81 d1 82 d0 b0 d1 82  ....... ........
0480: d1 83 d1 81 20 66 6f 73 73 69 6c 20 d0 bf d0 be  .... fossil ....
0490: d1 81 d0 bb d0 b5 20 d1 8d d1 82 d0 be d0 b3 d0  ...... .........
04a0: be 20 d1 87 d0 b8 d1 82 d0 b0 d0 b5 d0 bc 20 d0  . ............ .
04b0: b5 d0 b3 d0 be 2e 20 0d 0a 09 09 74 68 69 73 2e  ...... ....this.
04c0: 70 61 74 68 54 6f 43 6d 64 20 3d 20 54 65 6d 70  pathToCmd = Temp
04d0: 44 69 72 20 2b 20 22 67 69 74 63 6d 64 2e 62 61  Dir + "gitcmd.ba
04e0: 74 22 3b 0d 0a 0d 0a 09 09 42 61 63 6b 65 6e 64  t";......Backend
04f0: 47 69 74 2e 5f 69 6e 73 74 61 6e 63 65 20 3d 20  Git._instance = 
0500: 74 68 69 73 3b 0d 0a 0d 0a 20 20 20 20 7d 2c 0d  this;....    },.
0510: 0a 0d 0a 20 20 20 20 67 65 74 52 6f 6f 74 43 61  ...    getRootCa
0520: 74 61 6c 6f 67 20 3a 20 66 75 6e 63 74 69 6f 6e  talog : function
0530: 28 70 61 74 68 29 7b 0d 0a 0d 0a 20 20 20 20 09  (path){....    .
0540: 76 61 72 20 72 65 73 75 6c 74 20 3d 20 22 22 3b  var result = "";
0550: 0d 0a 09 20 20 20 20 66 6f 72 20 28 76 61 72 20  ...    for (var 
0560: 6b 65 79 20 69 6e 20 74 68 69 73 2e 43 61 74 61  key in this.Cata
0570: 6c 6f 67 41 6e 64 46 69 6c 65 73 53 74 61 74 75  logAndFilesStatu
0580: 73 29 7b 0d 0a 09 20 20 20 20 20 20 20 20 69 66  s){...        if
0590: 20 28 70 61 74 68 2e 69 6e 64 65 78 4f 66 28 6b   (path.indexOf(k
05a0: 65 79 29 21 3d 2d 31 29 20 7b 0d 0a 09 20 20 20  ey)!=-1) {...   
05b0: 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20           result 
05c0: 3d 20 6b 65 79 0d 0a 09 20 20 20 20 20 20 20 20  = key...        
05d0: 20 20 20 20 62 72 65 61 6b 3b 0d 0a 09 20 20 20      break;...   
05e0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 09 7d 0d 0a       }..    .}..
05f0: 20 20 20 20 09 69 66 20 28 28 72 65 73 75 6c 74      .if ((result
0600: 20 3d 3d 20 75 6e 64 65 66 69 6e 65 64 29 20 26   == undefined) &
0610: 26 20 28 72 65 73 75 6c 74 2e 6c 65 6e 67 74 68  & (result.length
0620: 3d 3d 30 29 29 7b 0d 0a 20 20 20 20 09 09 76 61  ==0)){..    ..va
0630: 72 20 66 20 3d 20 76 38 4e 65 77 28 22 46 69 6c  r f = v8New("Fil
0640: 65 22 2c 20 70 61 74 68 29 3b 0d 0a 09 20 20 20  e", path);...   
0650: 20 20 20 20 20 69 66 20 28 66 2e 45 78 69 73 74       if (f.Exist
0660: 28 29 29 20 7b 0d 0a 09 20 20 20 20 20 20 20 20  ()) {...        
0670: 20 20 20 20 0d 0a 09 20 20 20 20 20 20 20 20 20      ...         
0680: 20 20 20 76 61 72 20 54 65 78 74 44 6f 63 20 3d     var TextDoc =
0690: 20 76 38 4e 65 77 28 22 54 65 78 74 44 6f 63 75   v8New("TextDocu
06a0: 6d 65 6e 74 22 29 3b 0d 0a 09 20 20 20 20 20 20  ment");...      
06b0: 20 20 20 20 20 20 54 65 78 74 44 6f 63 2e d0 97        TextDoc...
06c0: d0 b0 d0 bf d0 b8 d1 81 d0 b0 d1 82 d1 8c 28 74  ..............(t
06d0: 68 69 73 2e 70 61 74 68 54 6f 54 65 6d 70 4f 75  his.pathToTempOu
06e0: 74 70 75 74 2c 20 22 55 54 46 2d 38 22 29 3b 0d  tput, "UTF-8");.
06f0: 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 d0 bc  ..            ..
0700: d0 bb d0 9a d0 b0 d1 82 d0 b0 d0 bb d0 be d0 b3  ................
0710: 20 3d 20 66 2e 50 61 74 68 3b 0d 0a 09 20 20 20   = f.Path;...   
0720: 20 20 20 20 20 20 20 20 20 54 65 78 74 44 6f 63           TextDoc
0730: 2e 41 64 64 4c 69 6e 65 28 27 63 64 20 2f 64 22  .AddLine('cd /d"
0740: 27 20 2b d0 bc d0 bb d0 9a d0 b0 d1 82 d0 b0 d0  ' +.............
0750: bb d0 be d0 b3 20 2b 27 22 27 29 0d 0a 09 20 20  ..... +'"')...  
0760: 20 20 20 20 20 20 20 20 20 20 54 65 78 74 44 6f            TextDo
0770: 63 2e 41 64 64 4c 69 6e 65 28 27 67 69 74 20 72  c.AddLine('git r
0780: 65 76 2d 70 61 72 73 65 20 2d 2d 73 68 6f 77 2d  ev-parse --show-
0790: 74 6f 70 6c 65 76 65 6c 20 3e 20 22 27 2b 74 68  toplevel > "'+th
07a0: 69 73 2e 70 61 74 68 54 6f 54 65 6d 70 4f 75 74  is.pathToTempOut
07b0: 70 75 74 2b 27 22 27 29 3b 20 2f 2f 20 68 74 74  put+'"'); // htt
07c0: 70 3a 2f 2f 73 74 61 63 6b 6f 76 65 72 66 6c 6f  p://stackoverflo
07d0: 77 2e 63 6f 6d 2f 71 75 65 73 74 69 6f 6e 73 2f  w.com/questions/
07e0: 39 35 37 39 32 38 2f 69 73 2d 74 68 65 72 65 2d  957928/is-there-
07f0: 61 2d 77 61 79 2d 74 6f 2d 67 65 74 2d 74 68 65  a-way-to-get-the
0800: 2d 67 69 74 2d 72 6f 6f 74 2d 64 69 72 65 63 74  -git-root-direct
0810: 6f 72 79 2d 69 6e 2d 6f 6e 65 2d 63 6f 6d 6d 61  ory-in-one-comma
0820: 6e 64 0d 0a 09 20 20 20 20 20 20 20 20 20 20 20  nd...           
0830: 20 54 65 78 74 44 6f 63 2e 57 72 69 74 65 28 74   TextDoc.Write(t
0840: 68 69 73 2e 70 61 74 68 54 6f 43 6d 64 2c 20 27  his.pathToCmd, '
0850: 63 70 38 36 36 27 29 3b 0d 0a 09 20 20 20 20 20  cp866');...     
0860: 20 20 20 20 20 20 20 45 72 72 43 6f 64 65 20 3d         ErrCode =
0870: 20 57 73 68 53 68 65 6c 6c 2e 52 75 6e 28 27 22   WshShell.Run('"
0880: 27 2b 74 68 69 73 2e 70 61 74 68 54 6f 43 6d 64  '+this.pathToCmd
0890: 2b 27 22 27 2c 20 30 2c 20 31 29 0d 0a 09 20 20  +'"', 0, 1)...  
08a0: 20 20 20 20 20 20 20 20 20 20 54 65 78 74 44 6f            TextDo
08b0: 63 2e 52 65 61 64 28 74 68 69 73 2e 70 61 74 68  c.Read(this.path
08c0: 54 6f 54 65 6d 70 4f 75 74 70 75 74 2c 20 22 55  ToTempOutput, "U
08d0: 54 46 2d 38 22 29 3b 0d 0a 09 20 20 20 20 20 20  TF-8");...      
08e0: 20 20 20 20 20 20 69 66 20 28 54 65 78 74 44 6f        if (TextDo
08f0: 63 2e 4c 69 6e 65 43 6f 75 6e 74 28 29 20 3d 3d  c.LineCount() ==
0900: 20 30 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20   0) {..         
0910: 20 20 20 20 20 20 20 20 20 20 20 6c 6f 67 67 65             logge
0920: 72 2e 65 72 72 6f 72 28 22 72 6f 6f 74 20 63 61  r.error("root ca
0930: 74 61 6c 6f 67 20 6e 6f 74 20 66 6f 75 6e 64 2c  talog not found,
0940: 20 d0 ba d0 be d0 bc d0 bc d0 b0 d0 bd d0 b4 d0   ...............
0950: b0 20 d0 bd d0 b5 20 d0 b2 d1 8b d0 bf d0 be d0  . .... .........
0960: bb d0 bd d0 b8 d0 bb d0 b0 d1 81 d1 8c 20 22 29  ............. ")
0970: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
0980: 20 20 20 20 20 20 20 6c 6f 67 67 65 72 2e 65 72         logger.er
0990: 72 6f 72 28 74 68 69 73 2e 70 61 74 68 54 6f 54  ror(this.pathToT
09a0: 65 6d 70 4f 75 74 70 75 74 29 3b 0d 0a 09 20 20  empOutput);...  
09b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
09c0: 74 75 72 6e 20 22 22 20 2f 2f d1 87 d1 82 d0 be  turn "" //......
09d0: 20 d1 82 d0 be 20 d0 bf d0 be d1 88 d0 bb d0 be   .... ..........
09e0: 20 d0 bd d0 b5 20 d1 82 d0 b0 d0 ba 2e 20 0d 0a   .... ....... ..
09f0: 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
0a00: 09 20 20 20 20 20 20 20 20 0d 0a 09 20 20 20 20  .        ...    
0a10: 20 20 20 20 20 20 20 20 76 61 72 20 69 3d 30 3b          var i=0;
0a20: 0d 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 66  ...            f
0a30: 6f 72 20 28 76 61 72 20 69 3d 31 3b 20 69 3c 3d  or (var i=1; i<=
0a40: 54 65 78 74 44 6f 63 2e 4c 69 6e 65 43 6f 75 6e  TextDoc.LineCoun
0a50: 74 28 29 3b 20 69 2b 2b 29 0d 0a 09 20 20 20 20  t(); i++)...    
0a60: 20 20 20 20 20 20 20 20 7b 0d 0a 09 20 20 20 20          {...    
0a70: 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20              var 
0a80: 72 20 3d 20 54 65 78 74 44 6f 63 2e 47 65 74 4c  r = TextDoc.GetL
0a90: 69 6e 65 28 69 29 3b 20 2f 2f 20 d1 82 d1 83 d1  ine(i); // .....
0aa0: 82 20 d0 b1 d1 83 d0 b4 d0 b5 d1 82 20 d0 bf d0  . .......... ...
0ab0: b5 d1 80 d0 b2 d0 b0 d1 8f 20 d0 bb d0 b8 d0 bd  ......... ......
0ac0: d0 b8 d1 8f 2e 20 0d 0a 09 20 20 20 20 20 20 20  ..... ...       
0ad0: 20 20 20 20 20 20 20 20 20 69 66 20 28 72 2e 73           if (r.s
0ae0: 75 62 73 74 72 28 30 2c 35 29 2e 69 6e 64 65 78  ubstr(0,5).index
0af0: 4f 66 28 22 66 61 74 61 6c 22 29 20 21 3d 20 2d  Of("fatal") != -
0b00: 31 29 7b 0d 0a 0d 0a 09 20 20 20 20 20 20 20 20  1){.....        
0b10: 20 20 20 20 20 20 20 20 09 72 6f 6f 74 70 61 74          .rootpat
0b20: 68 20 3d 20 72 2e 72 65 70 6c 61 63 65 28 2f 5c  h = r.replace(/\
0b30: 2f 2f 67 2c 20 27 5c 5c 27 29 3b 0d 0a 09 20 20  //g, '\\');...  
0b40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 09 72                .r
0b50: 65 73 75 6c 74 20 3d 20 72 6f 6f 74 70 61 74 68  esult = rootpath
0b60: 3b 0d 0a 09 20 20 20 20 20 20 20 20 20 20 20 20  ;...            
0b70: 20 20 20 20 09 74 68 69 73 2e 43 61 74 61 6c 6f      .this.Catalo
0b80: 67 41 6e 64 46 69 6c 65 73 53 74 61 74 75 73 5b  gAndFilesStatus[
0b90: 72 65 73 75 6c 74 5d 20 3d 20 7b 7d 3b 0d 0a 09  result] = {};...
0ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0bb0: 09 62 72 65 61 6b 0d 0a 09 20 20 20 20 20 20 20  .break...       
0bc0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 09 20 20 20           }...   
0bd0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 09 20 20 20           }...   
0be0: 20 20 20 20 20 20 20 20 20 54 65 78 74 44 6f 63           TextDoc
0bf0: 2e 43 6c 65 61 72 28 29 3b 0d 0a 09 20 20 20 20  .Clear();...    
0c00: 20 20 20 20 20 20 20 20 54 65 78 74 44 6f 63 2e          TextDoc.
0c10: 57 72 69 74 65 28 74 68 69 73 2e 70 61 74 68 54  Write(this.pathT
0c20: 6f 54 65 6d 70 4f 75 74 70 75 74 2c 20 22 55 54  oTempOutput, "UT
0c30: 46 2d 38 22 29 3b 0d 0a 09 20 20 20 20 20 20 20  F-8");...       
0c40: 20 7d 0d 0a 20 20 20 20 09 7d 0d 0a 20 20 20 20   }..    .}..    
0c50: 20 20 20 20 6c 6f 67 67 65 72 2e 64 65 62 75 67      logger.debug
0c60: 28 22 72 6f 6f 74 20 63 61 74 61 6c 6f 67 20 66  ("root catalog f
0c70: 6f 72 20 22 2b 70 61 74 68 20 2b 20 22 20 69 73  or "+path + " is
0c80: 20 22 2b 72 65 73 75 6c 74 29 0d 0a 09 20 20 20   "+result)...   
0c90: 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d   return result;.
0ca0: 0a 20 20 20 20 7d 2c 0d 0a 0d 0a 20 20 20 20 67  .    },....    g
0cb0: 65 74 53 74 61 74 75 73 46 6f 72 43 61 74 61 6c  etStatusForCatal
0cc0: 6f 67 20 3a 20 66 75 6e 63 74 69 6f 6e 28 70 61  og : function(pa
0cd0: 74 68 54 6f 43 61 74 61 6c 6f 67 29 7b 0d 0a 20  thToCatalog){.. 
0ce0: 20 20 20 20 20 20 20 69 66 20 28 21 74 68 69 73         if (!this
0cf0: 2e 43 61 74 61 6c 6f 67 41 6e 64 46 69 6c 65 73  .CatalogAndFiles
0d00: 53 74 61 74 75 73 20 29 20 7b 0d 0a 20 20 20 20  Status ) {..    
0d10: 20 20 20 20 20 20 20 20 4d 65 73 73 61 67 65 28          Message(
0d20: 22 6e 6f 74 20 64 65 66 69 6e 65 64 22 29 3b 0d  "not defined");.
0d30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69  .            thi
0d40: 73 2e 43 61 74 61 6c 6f 67 41 6e 64 46 69 6c 65  s.CatalogAndFile
0d50: 73 53 74 61 74 75 73 3d 5b 5d 0d 0a 20 20 20 20  sStatus=[]..    
0d60: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 6c      }..        l
0d70: 6f 67 67 65 72 2e 74 72 61 63 65 28 22 67 65 74  ogger.trace("get
0d80: 53 74 61 74 75 73 46 6f 72 43 61 74 61 6c 6f 67  StatusForCatalog
0d90: 22 29 3b 0d 0a 20 20 20 20 09 74 68 69 73 2e 43  ");..    .this.C
0da0: 61 74 61 6c 6f 67 41 6e 64 46 69 6c 65 73 53 74  atalogAndFilesSt
0db0: 61 74 75 73 5b 70 61 74 68 54 6f 43 61 74 61 6c  atus[pathToCatal
0dc0: 6f 67 5d 20 3d 20 7b 7d 3b 0d 0a 20 20 20 20 09  og] = {};..    .
0dd0: 76 61 72 20 d0 a1 d0 be d0 be d1 82 d0 b2 d0 b5  var ............
0de0: d1 82 d1 81 d1 82 d0 b2 d0 b8 d0 b5 d0 a1 d1 82  ................
0df0: d0 b0 d1 82 d1 83 d1 81 d0 be d0 b2 20 3d 20 74  ............ = t
0e00: 68 69 73 2e 43 61 74 61 6c 6f 67 41 6e 64 46 69  his.CatalogAndFi
0e10: 6c 65 73 53 74 61 74 75 73 5b 70 61 74 68 54 6f  lesStatus[pathTo
0e20: 43 61 74 61 6c 6f 67 5d 3b 0d 0a 20 20 20 20 09  Catalog];..    .
0e30: 76 61 72 20 54 65 78 74 44 6f 63 20 3d 20 76 38  var TextDoc = v8
0e40: 4e 65 77 28 22 54 65 78 74 44 6f 63 75 6d 65 6e  New("TextDocumen
0e50: 74 22 29 3b 0d 0a 20 20 20 20 09 54 65 78 74 44  t");..    .TextD
0e60: 6f 63 2e 57 72 69 74 65 28 74 68 69 73 2e 70 61  oc.Write(this.pa
0e70: 74 68 54 6f 54 65 6d 70 4f 75 74 70 75 74 2c 20  thToTempOutput, 
0e80: 22 55 54 46 2d 38 22 29 3b 0d 0a 20 20 20 20 09  "UTF-8");..    .
0e90: 54 65 78 74 44 6f 63 2e 41 64 64 4c 69 6e 65 28  TextDoc.AddLine(
0ea0: 27 63 64 20 2f 64 20 22 27 20 2b 70 61 74 68 54  'cd /d "' +pathT
0eb0: 6f 43 61 74 61 6c 6f 67 2b 27 22 27 29 3b 0d 0a  oCatalog+'"');..
0ec0: 20 20 20 20 09 54 65 78 74 44 6f 63 2e 41 64 64      .TextDoc.Add
0ed0: 4c 69 6e 65 28 27 67 69 74 20 73 74 61 74 75 73  Line('git status
0ee0: 20 2d 73 20 2d 75 20 2d 2d 70 6f 72 63 65 6c 61   -s -u --porcela
0ef0: 69 6e 20 3e 20 22 27 2b 74 68 69 73 2e 70 61 74  in > "'+this.pat
0f00: 68 54 6f 54 65 6d 70 4f 75 74 70 75 74 2b 27 22  hToTempOutput+'"
0f10: 27 29 3b 0d 0a 20 20 20 20 09 54 65 78 74 44 6f  ');..    .TextDo
0f20: 63 2e 57 72 69 74 65 28 74 68 69 73 2e 70 61 74  c.Write(this.pat
0f30: 68 54 6f 43 6d 64 2c 20 22 63 70 38 36 36 22 29  hToCmd, "cp866")
0f40: 3b 0d 0a 20 20 20 20 09 45 72 72 43 6f 64 65 20  ;..    .ErrCode 
0f50: 3d 20 57 73 68 53 68 65 6c 6c 2e 52 75 6e 28 27  = WshShell.Run('
0f60: 22 27 2b 74 68 69 73 2e 70 61 74 68 54 6f 43 6d  "'+this.pathToCm
0f70: 64 2b 27 22 27 2c 20 30 2c 20 31 29 3b 0d 0a 20  d+'"', 0, 1);.. 
0f80: 20 20 20 09 54 65 78 74 44 6f 63 2e 52 65 61 64     .TextDoc.Read
0f90: 28 74 68 69 73 2e 70 61 74 68 54 6f 54 65 6d 70  (this.pathToTemp
0fa0: 4f 75 74 70 75 74 2c 20 22 55 54 46 2d 38 22 29  Output, "UTF-8")
0fb0: 3b 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 54  ;..        if (T
0fc0: 65 78 74 44 6f 63 2e 4c 69 6e 65 43 6f 75 6e 74  extDoc.LineCount
0fd0: 28 29 20 3d 3d 20 30 29 20 7b 0d 0a 20 20 20 20  () == 0) {..    
0fe0: 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 67 67              logg
0ff0: 65 72 2e 65 72 72 6f 72 28 22 d0 bf d0 be d0 bb  er.error("......
1000: d1 83 d1 87 d0 b5 d0 bd d0 b8 d0 b5 20 d1 81 d1  ............ ...
1010: 82 d0 b0 d1 82 d1 83 d1 81 d0 b0 20 d1 84 d0 b0  ........... ....
1020: d0 b9 d0 bb d0 be d0 b2 20 d0 b4 d0 bb d1 8f 20  ........ ...... 
1030: d0 ba d0 b0 d1 82 d0 b0 d0 bb d0 be d0 b3 d0 be  ................
1040: d0 b2 20 d1 81 d0 bb d0 be d0 bc d0 b0 d0 bb d0  .. .............
1050: be d1 81 d1 8c 2e 22 29 0d 0a 20 20 20 20 20 20  ......")..      
1060: 20 20 20 20 20 20 20 20 20 20 6c 6f 67 67 65 72            logger
1070: 2e 65 72 72 6f 72 28 70 61 74 68 54 6f 43 61 74  .error(pathToCat
1080: 61 6c 6f 67 29 3b 0d 0a 20 20 20 20 20 20 20 20  alog);..        
1090: 20 20 20 20 20 20 20 20 6c 6f 67 67 65 72 2e 65          logger.e
10a0: 72 72 6f 72 28 74 68 69 73 2e 70 61 74 68 54 6f  rror(this.pathTo
10b0: 54 65 6d 70 4f 75 74 70 75 74 29 3b 0d 0a 20 20  TempOutput);..  
10c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
10d0: 74 75 72 6e 20 66 61 6c 73 65 20 2f 2f d1 87 d1  turn false //...
10e0: 82 d0 be 20 d1 82 d0 be 20 d0 bf d0 be d1 88 d0  ... .... .......
10f0: bb d0 be 20 d0 bd d0 b5 20 d1 82 d0 b0 d0 ba 2e  ... .... .......
1100: 20 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20   ..        }..  
1110: 20 20 20 20 20 20 76 61 72 20 69 3d 30 3b 0d 0a        var i=0;..
1120: 20 20 20 20 20 20 20 20 72 65 20 3d 20 6e 65 77          re = new
1130: 20 52 65 67 45 78 70 28 2f 5e 28 5c 73 4d 7c 5c   RegExp(/^(\sM|\
1140: 73 41 7c 5c 73 44 7c 5c 3f 5c 3f 7c 52 7c 43 7c  sA|\sD|\?\?|R|C|
1150: 55 29 5c 73 7b 31 2c 32 7d 28 2e 2a 29 24 2f 29  U)\s{1,2}(.*)$/)
1160: 3b 0d 0a 20 20 20 20 20 20 20 20 66 6f 72 20 28  ;..        for (
1170: 76 61 72 20 69 3d 31 3b 20 69 3c 3d 54 65 78 74  var i=1; i<=Text
1180: 44 6f 63 2e 4c 69 6e 65 43 6f 75 6e 74 28 29 3b  Doc.LineCount();
1190: 20 69 2b 2b 29 0d 0a 20 20 20 20 20 20 20 20 7b   i++)..        {
11a0: 0d 0a 09 20 20 20 20 20 20 20 20 76 61 72 20 72  ...        var r
11b0: 20 3d 20 54 65 78 74 44 6f 63 2e 47 65 74 4c 69   = TextDoc.GetLi
11c0: 6e 65 28 69 29 3b 0d 0a 20 20 20 20 20 20 20 20  ne(i);..        
11d0: 20 20 20 20 6c 6f 67 67 65 72 2e 74 72 61 63 65      logger.trace
11e0: 28 72 29 3b 0d 0a 09 20 20 20 20 20 20 20 20 76  (r);...        v
11f0: 61 72 20 6d 61 74 68 65 73 20 3d 20 72 2e 6d 61  ar mathes = r.ma
1200: 74 63 68 28 72 65 29 3b 0d 0a 09 20 20 20 20 20  tch(re);...     
1210: 20 20 20 69 66 20 28 6d 61 74 68 65 73 20 26 26     if (mathes &&
1220: 20 6d 61 74 68 65 73 2e 6c 65 6e 67 74 68 29 20   mathes.length) 
1230: 7b 0d 0a 09 20 20 20 20 20 20 20 20 20 20 20 20  {...            
1240: 66 69 6c 65 6e 61 6d 65 20 3d 20 22 22 2b 6d 61  filename = ""+ma
1250: 74 68 65 73 5b 32 5d 20 0d 0a 09 20 20 20 20 20  thes[2] ...     
1260: 20 20 20 20 20 20 20 66 69 6c 65 6e 61 6d 65 20         filename 
1270: 3d 20 66 69 6c 65 6e 61 6d 65 2e 72 65 70 6c 61  = filename.repla
1280: 63 65 28 2f 5c 2f 2f 67 2c 20 27 5c 5c 27 29 3b  ce(/\//g, '\\');
1290: 20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   ..             
12a0: 20 20 20 66 69 6c 65 6e 61 6d 65 20 3d 20 66 69     filename = fi
12b0: 6c 65 6e 61 6d 65 2e 72 65 70 6c 61 63 65 28 2f  lename.replace(/
12c0: 22 2f 67 2c 20 27 27 29 3b 20 2f 2f 46 49 58 4d  "/g, ''); //FIXM
12d0: 45 3a 20 d0 b4 d0 bb d1 8f 20 d0 bb d0 b8 d0 bd  E: ...... ......
12e0: d1 83 d0 ba d1 81 20 d0 b2 d0 b5 d1 80 d1 81 d0  ...... .........
12f0: b8 d0 b8 20 d1 8d d1 82 d0 be 20 d0 bd d0 b5 d0  ... ...... .....
1300: bf d1 80 d0 b0 d0 b2 d0 b8 d0 bb d1 8c d0 bd d0  ................
1310: be 2e 20 0d 0a 20 20 20 20 20 20 20 20 20 20 20  .. ..           
1320: 20 20 20 20 20 6c 6f 67 67 65 72 2e 74 72 61 63       logger.trac
1330: 65 28 22 6d 61 74 63 68 20 74 6f 20 66 69 6c 65  e("match to file
1340: 20 22 2b 20 66 69 6c 65 6e 61 6d 65 20 2b 22 20   "+ filename +" 
1350: 69 73 20 22 2b 20 6d 61 74 68 65 73 5b 31 5d 29  is "+ mathes[1])
1360: 0d 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 73  ...            s
1370: 77 69 74 63 68 20 28 6d 61 74 68 65 73 5b 31 5d  witch (mathes[1]
1380: 29 20 0d 0a 09 20 20 20 20 20 20 20 20 20 20 20  ) ...           
1390: 20 7b 0d 0a 09 20 20 20 20 20 20 20 20 20 20 20   {...           
13a0: 20 20 20 20 20 63 61 73 65 20 22 20 4d 22 3a 0d       case " M":.
13b0: 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13c0: 20 20 d0 a1 d0 be d0 be d1 82 d0 b2 d0 b5 d1 82    ..............
13d0: d1 81 d1 82 d0 b2 d0 b8 d0 b5 d0 a1 d1 82 d0 b0  ................
13e0: d1 82 d1 83 d1 81 d0 be d0 b2 5b 46 53 4f 2e 42  ..........[FSO.B
13f0: 75 69 6c 64 50 61 74 68 28 70 61 74 68 54 6f 43  uildPath(pathToC
1400: 61 74 61 6c 6f 67 2c 20 66 69 6c 65 6e 61 6d 65  atalog, filename
1410: 29 5d 3d 20 22 45 44 49 54 45 44 22 0d 0a 09 20  )]= "EDITED"... 
1420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
1430: 72 65 61 6b 3b 0d 0a 09 20 20 20 20 20 20 20 20  reak;...        
1440: 20 20 20 20 20 20 20 20 0d 0a 09 20 20 20 20 20          ...     
1450: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20             case 
1460: 22 20 41 22 3a 0d 0a 09 20 20 20 20 20 20 20 20  " A":...        
1470: 20 20 20 20 20 20 20 20 d0 a1 d0 be d0 be d1 82          ........
1480: d0 b2 d0 b5 d1 82 d1 81 d1 82 d0 b2 d0 b8 d0 b5  ................
1490: d0 a1 d1 82 d0 b0 d1 82 d1 83 d1 81 d0 be d0 b2  ................
14a0: 5b 46 53 4f 2e 42 75 69 6c 64 50 61 74 68 28 70  [FSO.BuildPath(p
14b0: 61 74 68 54 6f 43 61 74 61 6c 6f 67 2c 20 66 69  athToCatalog, fi
14c0: 6c 65 6e 61 6d 65 29 5d 3d 20 22 41 44 44 45 44  lename)]= "ADDED
14d0: 22 0d 0a 09 20 20 20 20 20 20 20 20 20 20 20 20  "...            
14e0: 20 20 20 20 62 72 65 61 6b 3b 0d 0a 09 20 20 20      break;...   
14f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 0d 0a 09               ...
1500: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1510: 63 61 73 65 20 22 3f 3f 22 3a 0d 0a 09 20 20 20  case "??":...   
1520: 20 20 20 20 20 20 20 20 20 20 20 20 20 d0 a1 d0               ...
1530: be d0 be d1 82 d0 b2 d0 b5 d1 82 d1 81 d1 82 d0  ................
1540: b2 d0 b8 d0 b5 d0 a1 d1 82 d0 b0 d1 82 d1 83 d1  ................
1550: 81 d0 be d0 b2 5b 46 53 4f 2e 42 75 69 6c 64 50  .....[FSO.BuildP
1560: 61 74 68 28 70 61 74 68 54 6f 43 61 74 61 6c 6f  ath(pathToCatalo
1570: 67 2c 20 66 69 6c 65 6e 61 6d 65 29 5d 3d 20 22  g, filename)]= "
1580: 4e 4f 54 56 45 52 53 49 4f 4e 45 44 22 0d 0a 09  NOTVERSIONED"...
1590: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15a0: 62 72 65 61 6b 3b 0d 0a 09 20 20 20 20 20 20 20  break;...       
15b0: 20 20 20 20 20 20 20 20 20 0d 0a 09 20 20 20 20           ...    
15c0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65              case
15d0: 20 22 20 44 22 3a 0d 0a 09 20 20 20 20 20 20 20   " D":...       
15e0: 20 20 20 20 20 20 20 20 20 d0 a1 d0 be d0 be d1           .......
15f0: 82 d0 b2 d0 b5 d1 82 d1 81 d1 82 d0 b2 d0 b8 d0  ................
1600: b5 d0 a1 d1 82 d0 b0 d1 82 d1 83 d1 81 d0 be d0  ................
1610: b2 5b 46 53 4f 2e 42 75 69 6c 64 50 61 74 68 28  .[FSO.BuildPath(
1620: 70 61 74 68 54 6f 43 61 74 61 6c 6f 67 2c 20 66  pathToCatalog, f
1630: 69 6c 65 6e 61 6d 65 29 5d 3d 20 22 44 45 4c 45  ilename)]= "DELE
1640: 54 45 44 22 0d 0a 09 20 20 20 20 20 20 20 20 20  TED"...         
1650: 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d 0a 0d         break;...
1660: 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1670: 20 20 63 61 73 65 20 22 20 52 22 3a 0d 0a 09 20    case " R":... 
1680: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 d0                 .
1690: a1 d0 be d0 be d1 82 d0 b2 d0 b5 d1 82 d1 81 d1  ................
16a0: 82 d0 b2 d0 b8 d0 b5 d0 a1 d1 82 d0 b0 d1 82 d1  ................
16b0: 83 d1 81 d0 be d0 b2 5b 46 53 4f 2e 42 75 69 6c  .......[FSO.Buil
16c0: 64 50 61 74 68 28 70 61 74 68 54 6f 43 61 74 61  dPath(pathToCata
16d0: 6c 6f 67 2c 20 66 69 6c 65 6e 61 6d 65 29 5d 3d  log, filename)]=
16e0: 20 22 72 65 6e 61 6d 65 22 3b 0d 0a 09 20 20 20   "rename";...   
16f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65               bre
1700: 61 6b 3b 0d 0a 0d 0a 09 20 20 20 20 20 20 20 20  ak;.....        
1710: 20 20 20 20 20 20 20 20 63 61 73 65 20 22 20 43          case " C
1720: 22 3a 0d 0a 09 20 20 20 20 20 20 20 20 20 20 20  ":...           
1730: 20 20 20 20 20 d0 a1 d0 be d0 be d1 82 d0 b2 d0       ...........
1740: b5 d1 82 d1 81 d1 82 d0 b2 d0 b8 d0 b5 d0 a1 d1  ................
1750: 82 d0 b0 d1 82 d1 83 d1 81 d0 be d0 b2 5b 46 53  .............[FS
1760: 4f 2e 42 75 69 6c 64 50 61 74 68 28 70 61 74 68  O.BuildPath(path
1770: 54 6f 43 61 74 61 6c 6f 67 2c 20 66 69 6c 65 6e  ToCatalog, filen
1780: 61 6d 65 29 5d 3d 20 22 63 6f 70 69 65 64 22 3b  ame)]= "copied";
1790: 0d 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
17a0: 20 20 20 62 72 65 61 6b 3b 0d 0a 0d 0a 09 20 20     break;.....  
17b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
17c0: 73 65 20 22 20 55 22 3a 0d 0a 09 20 20 20 20 20  se " U":...     
17d0: 20 20 20 20 20 20 20 20 20 20 20 d0 a1 d0 be d0             .....
17e0: be d1 82 d0 b2 d0 b5 d1 82 d1 81 d1 82 d0 b2 d0  ................
17f0: b8 d0 b5 d0 a1 d1 82 d0 b0 d1 82 d1 83 d1 81 d0  ................
1800: be d0 b2 5b 46 53 4f 2e 42 75 69 6c 64 50 61 74  ...[FSO.BuildPat
1810: 68 28 70 61 74 68 54 6f 43 61 74 61 6c 6f 67 2c  h(pathToCatalog,
1820: 20 66 69 6c 65 6e 61 6d 65 29 5d 3d 20 22 75 70   filename)]= "up
1830: 64 61 74 65 22 3b 0d 0a 09 20 20 20 20 20 20 20  date";...       
1840: 20 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d           break;.
1850: 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
1860: 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 63 6f  ..            co
1870: 6e 74 69 6e 75 65 3b 0d 0a 09 20 20 20 20 20 20  ntinue;...      
1880: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
1890: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 54 4f 44 4f  ..        //TODO
18a0: 3a 20 d1 82 d1 83 d1 82 20 d0 bf d0 be d0 bb d1  : ...... .......
18b0: 83 d1 87 d0 b8 d0 bc 20 d0 b8 d0 bc d1 8f 20 d0  ....... ...... .
18c0: b2 d0 b5 d1 82 d0 ba d0 b8 20 d1 82 d0 b5 d0 ba  ......... ......
18d0: d1 83 d1 89 d0 b5 d0 b9 2e 0d 0a 20 20 20 20 20  ...........     
18e0: 20 20 20 76 61 72 20 54 65 78 74 44 6f 63 20 3d     var TextDoc =
18f0: 20 76 38 4e 65 77 28 22 54 65 78 74 44 6f 63 75   v8New("TextDocu
1900: 6d 65 6e 74 22 29 3b 0d 0a 20 20 20 20 20 20 20  ment");..       
1910: 20 2f 2f 54 65 78 74 44 6f 63 2e 57 72 69 74 65   //TextDoc.Write
1920: 28 74 68 69 73 2e 70 61 74 68 54 6f 54 65 6d 70  (this.pathToTemp
1930: 4f 75 74 70 75 74 2c 20 22 55 54 46 2d 38 22 29  Output, "UTF-8")
1940: 3b 0d 0a 20 20 20 20 20 20 20 20 54 65 78 74 44  ;..        TextD
1950: 6f 63 2e 57 72 69 74 65 28 74 68 69 73 2e 70 61  oc.Write(this.pa
1960: 74 68 54 6f 43 6d 64 2c 20 22 55 54 46 2d 38 22  thToCmd, "UTF-8"
1970: 29 3b 0d 0a 20 20 20 20 20 20 20 20 54 65 78 74  );..        Text
1980: 44 6f 63 2e 41 64 64 4c 69 6e 65 28 27 63 64 20  Doc.AddLine('cd 
1990: 2f 64 20 22 27 20 2b 70 61 74 68 54 6f 43 61 74  /d "' +pathToCat
19a0: 61 6c 6f 67 2b 27 22 27 29 3b 0d 0a 20 20 20 20  alog+'"');..    
19b0: 20 20 20 20 54 65 78 74 44 6f 63 2e 41 64 64 4c      TextDoc.AddL
19c0: 69 6e 65 28 27 67 69 74 20 62 72 61 6e 63 68 20  ine('git branch 
19d0: 2d 2d 6e 6f 2d 63 6f 6c 6f 72 20 2d 6c 20 3e 20  --no-color -l > 
19e0: 22 27 2b 74 68 69 73 2e 70 61 74 68 54 6f 54 65  "'+this.pathToTe
19f0: 6d 70 4f 75 74 70 75 74 2b 27 22 27 29 3b 0d 0a  mpOutput+'"');..
1a00: 20 20 20 20 20 20 20 20 2f 2f 54 65 78 74 44 6f          //TextDo
1a10: 63 2e 57 72 69 74 65 28 74 68 69 73 2e 70 61 74  c.Write(this.pat
1a20: 68 54 6f 43 6d 64 2c 20 22 63 70 38 36 36 22 29  hToCmd, "cp866")
1a30: 3b 0d 0a 20 20 20 20 20 20 20 20 45 72 72 43 6f  ;..        ErrCo
1a40: 64 65 20 3d 20 57 73 68 53 68 65 6c 6c 2e 52 75  de = WshShell.Ru
1a50: 6e 28 27 22 27 2b 74 68 69 73 2e 70 61 74 68 54  n('"'+this.pathT
1a60: 6f 43 6d 64 2b 27 22 27 2c 20 30 2c 20 31 29 3b  oCmd+'"', 0, 1);
1a70: 0d 0a 20 20 20 20 20 20 20 20 54 65 78 74 44 6f  ..        TextDo
1a80: 63 2e 52 65 61 64 28 74 68 69 73 2e 70 61 74 68  c.Read(this.path
1a90: 54 6f 54 65 6d 70 4f 75 74 70 75 74 2c 20 22 55  ToTempOutput, "U
1aa0: 54 46 2d 38 22 29 3b 0d 0a 20 20 20 20 20 20 20  TF-8");..       
1ab0: 20 69 66 20 28 54 65 78 74 44 6f 63 2e 4c 69 6e   if (TextDoc.Lin
1ac0: 65 43 6f 75 6e 74 28 29 20 3d 3d 20 30 29 20 7b  eCount() == 0) {
1ad0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1ae0: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 20 2f    return false /
1af0: 2f d1 87 d1 82 d0 be 20 d1 82 d0 be 20 d0 bf d0  /...... .... ...
1b00: be d1 88 d0 bb d0 be 20 d0 bd d0 b5 20 d1 82 d0  ....... .... ...
1b10: b0 d0 ba 2e 20 0d 0a 20 20 20 20 20 20 20 20 7d  .... ..        }
1b20: 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20 69 3d  ..        var i=
1b30: 30 3b 0d 0a 20 20 20 20 20 20 20 20 72 65 20 3d  0;..        re =
1b40: 20 6e 65 77 20 52 65 67 45 78 70 28 2f 2e 2a 28   new RegExp(/.*(
1b50: 5c 2a 29 5c 73 2a 28 2e 2a 29 2f 29 3b 0d 0a 20  \*)\s*(.*)/);.. 
1b60: 20 20 20 20 20 20 20 66 6f 72 20 28 76 61 72 20         for (var 
1b70: 69 3d 31 3b 20 69 3c 3d 54 65 78 74 44 6f 63 2e  i=1; i<=TextDoc.
1b80: 4c 69 6e 65 43 6f 75 6e 74 28 29 3b 20 69 2b 2b  LineCount(); i++
1b90: 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
1ba0: 20 76 61 72 20 72 20 3d 20 54 65 78 74 44 6f 63   var r = TextDoc
1bb0: 2e 47 65 74 4c 69 6e 65 28 69 29 3b 0d 0a 20 20  .GetLine(i);..  
1bc0: 20 20 20 20 20 20 20 20 20 20 76 61 72 20 6d 61            var ma
1bd0: 74 68 65 73 20 3d 20 72 2e 6d 61 74 63 68 28 72  thes = r.match(r
1be0: 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
1bf0: 20 69 66 20 28 6d 61 74 68 65 73 20 26 26 20 6d   if (mathes && m
1c00: 61 74 68 65 73 2e 6c 65 6e 67 74 68 29 20 7b 0d  athes.length) {.
1c10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1c20: 20 62 72 61 6e 63 68 6e 61 6d 65 20 3d 20 22 22   branchname = ""
1c30: 2b 6d 61 74 68 65 73 5b 32 5d 3b 0d 0a 20 20 20  +mathes[2];..   
1c40: 20 20 20 20 20 20 20 20 20 20 20 20 20 d0 a1 d0               ...
1c50: be d0 be d1 82 d0 b2 d0 b5 d1 82 d1 81 d1 82 d0  ................
1c60: b2 d0 b8 d0 b5 d0 a1 d1 82 d0 b0 d1 82 d1 83 d1  ................
1c70: 81 d0 be d0 b2 5b 70 61 74 68 54 6f 43 61 74 61  .....[pathToCata
1c80: 6c 6f 67 5d 3d 62 72 61 6e 63 68 6e 61 6d 65 3b  log]=branchname;
1c90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1ca0: 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20    break;..      
1cb0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1cc0: 20 7d 0d 0a 0d 0a 09 20 20 20 20 72 65 74 75 72   }.....    retur
1cd0: 6e 20 74 72 75 65 0d 0a 09 7d 2c 0d 0a 0d 0a 09  n true...},.....
1ce0: 67 65 74 46 69 6c 65 53 74 61 74 75 73 20 3a 20  getFileStatus : 
1cf0: 66 75 6e 63 74 69 6f 6e 28 70 61 74 68 54 6f 43  function(pathToC
1d00: 61 74 61 6c 6f 67 2c 20 70 61 74 68 54 6f 46 69  atalog, pathToFi
1d10: 6c 65 29 7b 0d 0a 09 09 76 61 72 20 d0 bb d0 9a  le){....var ....
1d20: d0 b0 d1 82 d0 b0 d0 bb d0 be d0 b3 20 3d 20 70  ............ = p
1d30: 61 74 68 54 6f 43 61 74 61 6c 6f 67 3b 0d 0a 09  athToCatalog;...
1d40: 09 76 61 72 20 72 6f 6f 74 43 61 74 61 6c 6f 67  .var rootCatalog
1d50: 20 3d 20 74 68 69 73 2e 67 65 74 52 6f 6f 74 43   = this.getRootC
1d60: 61 74 61 6c 6f 67 28 70 61 74 68 54 6f 46 69 6c  atalog(pathToFil
1d70: 65 29 3b 0d 0a 0d 0a 09 20 20 20 20 d0 a1 d0 be  e);.....    ....
1d80: d0 be d1 82 d0 b2 d0 b5 d1 82 d1 81 d0 b2 d0 b8  ................
1d90: d0 b5 d0 a4 d0 b0 d0 b9 d0 bb d0 be d0 b2 20 3d  .............. =
1da0: 20 74 68 69 73 2e 43 61 74 61 6c 6f 67 41 6e 64   this.CatalogAnd
1db0: 46 69 6c 65 73 53 74 61 74 75 73 5b 72 6f 6f 74  FilesStatus[root
1dc0: 43 61 74 61 6c 6f 67 5d 3b 0d 0a 09 20 20 20 20  Catalog];...    
1dd0: 69 66 20 28 d0 a1 d0 be d0 be d1 82 d0 b2 d0 b5  if (............
1de0: d1 82 d1 81 d0 b2 d0 b8 d0 b5 d0 a4 d0 b0 d0 b9  ................
1df0: d0 bb d0 be d0 b2 20 3d 3d 20 75 6e 64 65 66 69  ...... == undefi
1e00: 6e 65 64 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  ned) {..        
1e10: 20 20 20 20 6c 6f 67 67 65 72 2e 64 65 62 75 67      logger.debug
1e20: 28 22 d0 9d d0 b5 20 d0 bd d0 b0 d0 b9 d0 b4 d0  (".... .........
1e30: b5 d0 bd d0 bd d0 be 20 d1 81 d0 be d0 be d1 82  ....... ........
1e40: d0 b2 d0 b5 d1 82 d1 81 d0 b2 d0 b8 d0 b5 20 d1  .............. .
1e50: 81 d1 82 d0 b0 d1 82 d1 83 d1 81 d0 be d0 b2 20  ............... 
1e60: d1 84 d0 b0 d0 b9 d0 bb d0 be d0 b2 20 d0 b4 d0  ............ ...
1e70: bb d1 8f 20 d0 ba d0 b0 d1 82 d0 b0 d0 bb d0 be  ... ............
1e80: d0 b3 d0 b0 20 22 2b 72 6f 6f 74 43 61 74 61 6c  .... "+rootCatal
1e90: 6f 67 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  og);..          
1ea0: 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 20 0d 0a    return null ..
1eb0: 20 20 20 20 20 20 20 20 7d 0d 0a 09 20 20 20 20          }...    
1ec0: 0d 0a 09 20 20 20 20 72 65 74 75 72 6e 20 28 d0  ...    return (.
1ed0: a1 d0 be d0 be d1 82 d0 b2 d0 b5 d1 82 d1 81 d0  ................
1ee0: b2 d0 b8 d0 b5 d0 a4 d0 b0 d0 b9 d0 bb d0 be d0  ................
1ef0: b2 5b 70 61 74 68 54 6f 46 69 6c 65 5d 20 3d 3d  .[pathToFile] ==
1f00: 20 75 6e 64 65 66 69 6e 65 64 29 20 3f 20 6e 75   undefined) ? nu
1f10: 6c 6c 20 3a 20 d0 a1 d0 be d0 be d1 82 d0 b2 d0  ll : ...........
1f20: b5 d1 82 d1 81 d0 b2 d0 b8 d0 b5 d0 a4 d0 b0 d0  ................
1f30: b9 d0 bb d0 be d0 b2 5b 70 61 74 68 54 6f 46 69  .......[pathToFi
1f40: 6c 65 5d 0d 0a 09 7d 2c 0d 0a 0d 0a 09 74 65 73  le]...},.....tes
1f50: 74 20 3a 20 66 75 6e 63 74 69 6f 6e 28 70 61 74  t : function(pat
1f60: 68 54 6f 43 61 74 61 6c 6f 67 29 7b 0d 0a 0d 0a  hToCatalog){....
1f70: 09 20 20 20 20 76 61 72 20 66 20 3d 20 76 38 4e  .    var f = v8N
1f80: 65 77 28 22 46 69 6c 65 22 2c 20 70 61 74 68 54  ew("File", pathT
1f90: 6f 43 61 74 61 6c 6f 67 29 3b 0d 0a 20 20 20 20  oCatalog);..    
1fa0: 09 69 66 20 28 21 66 2e 45 78 69 73 74 28 29 29  .if (!f.Exist())
1fb0: 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 20 0d   return false; .
1fc0: 0a 20 20 20 20 09 69 66 20 28 21 66 2e 49 73 44  .    .if (!f.IsD
1fd0: 69 72 65 63 74 6f 72 79 28 29 29 20 72 65 74 75  irectory()) retu
1fe0: 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 09  rn false;..    .
1ff0: 76 61 72 20 66 20 3d 20 76 38 4e 65 77 28 22 46  var f = v8New("F
2000: 69 6c 65 22 2c 20 46 53 4f 2e 42 75 69 6c 64 50  ile", FSO.BuildP
2010: 61 74 68 28 70 61 74 68 54 6f 43 61 74 61 6c 6f  ath(pathToCatalo
2020: 67 2c 20 27 2e 67 69 74 27 29 29 3b 0d 0a 20 20  g, '.git'));..  
2030: 20 20 09 69 66 20 28 21 66 2e 45 78 69 73 74 28    .if (!f.Exist(
2040: 29 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 09 72  )) {..        .r
2050: 65 74 75 72 6e 20 66 61 6c 73 65 0d 0a 20 20 20  eturn false..   
2060: 20 09 7d 0d 0a 20 20 20 20 09 72 65 74 75 72 6e   .}..    .return
2070: 20 74 72 75 65 0d 0a 09 7d 2c 0d 0a 0d 0a 20 20   true...},....  
2080: 20 20 61 64 64 20 3a 20 66 75 6e 63 74 69 6f 6e    add : function
2090: 28 70 61 74 68 54 6f 46 69 6c 65 2c 20 70 61 72  (pathToFile, par
20a0: 61 6d 32 29 20 7b 0d 0a 20 20 20 20 20 20 20 20  am2) {..        
20b0: 76 61 72 20 72 6f 6f 74 43 61 74 61 6c 6f 67 20  var rootCatalog 
20c0: 3d 20 74 68 69 73 2e 67 65 74 52 6f 6f 74 43 61  = this.getRootCa
20d0: 74 61 6c 6f 67 28 70 61 74 68 54 6f 46 69 6c 65  talog(pathToFile
20e0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20  );..        var 
20f0: 66 20 3d 20 76 38 4e 65 77 28 22 46 69 6c 65 22  f = v8New("File"
2100: 2c 20 70 61 74 68 54 6f 46 69 6c 65 29 3b 0d 0a  , pathToFile);..
2110: 20 20 20 20 20 20 20 20 69 66 20 28 66 2e 49 73          if (f.Is
2120: 44 69 72 65 63 74 6f 72 79 28 29 29 20 7b 0d 0a  Directory()) {..
2130: 20 20 20 20 20 20 20 20 20 20 20 20 70 61 74 68              path
2140: 54 6f 46 69 6c 65 20 3d 20 27 2e 27 0d 0a 20 20  ToFile = '.'..  
2150: 20 20 20 20 20 20 7d 20 65 6c 73 65 20 7b 0d 0a        } else {..
2160: 20 20 20 20 20 20 20 20 20 20 20 20 70 61 74 68              path
2170: 54 6f 46 69 6c 65 20 3d 20 27 22 27 2b 70 61 74  ToFile = '"'+pat
2180: 68 54 6f 46 69 6c 65 2b 27 22 27 0d 0a 20 20 20  hToFile+'"'..   
2190: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
21a0: 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20 54 65  ..        var Te
21b0: 78 74 44 6f 63 20 3d 20 76 38 4e 65 77 28 22 54  xtDoc = v8New("T
21c0: 65 78 74 44 6f 63 75 6d 65 6e 74 22 29 3b 0d 0a  extDocument");..
21d0: 20 20 20 20 20 20 20 20 54 65 78 74 44 6f 63 2e          TextDoc.
21e0: 41 64 64 4c 69 6e 65 28 27 63 64 20 2f 64 20 22  AddLine('cd /d "
21f0: 27 2b 72 6f 6f 74 43 61 74 61 6c 6f 67 2b 27 22  '+rootCatalog+'"
2200: 27 29 0d 0a 20 20 20 20 20 20 20 20 54 65 78 74  ')..        Text
2210: 44 6f 63 2e 41 64 64 4c 69 6e 65 28 27 67 69 74  Doc.AddLine('git
2220: 20 61 64 64 20 27 20 2b 70 61 74 68 54 6f 46 69   add ' +pathToFi
2230: 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 54 65  le);..        Te
2240: 78 74 44 6f 63 2e 57 72 69 74 65 28 74 68 69 73  xtDoc.Write(this
2250: 2e 70 61 74 68 54 6f 43 6d 64 2c 20 27 63 70 38  .pathToCmd, 'cp8
2260: 36 36 27 29 3b 0d 0a 20 20 20 20 20 20 20 20 0d  66');..        .
2270: 0a 20 20 20 20 20 20 20 20 54 65 78 74 44 6f 63  .        TextDoc
2280: 2e 43 6c 65 61 72 28 29 3b 0d 0a 20 20 20 20 20  .Clear();..     
2290: 20 20 20 45 72 72 43 6f 64 65 20 3d 20 57 73 68     ErrCode = Wsh
22a0: 53 68 65 6c 6c 2e 52 75 6e 28 27 22 27 2b 74 68  Shell.Run('"'+th
22b0: 69 73 2e 70 61 74 68 54 6f 43 6d 64 2b 27 22 27  is.pathToCmd+'"'
22c0: 2c 20 30 2c 20 31 29 0d 0a 20 20 20 20 20 20 20  , 0, 1)..       
22d0: 20 72 65 74 75 72 6e 20 45 72 72 43 6f 64 65 0d   return ErrCode.
22e0: 0a 20 20 20 20 7d 20 2c 0d 0a 0d 0a 20 20 20 20  .    } ,....    
22f0: 67 65 74 46 69 6c 65 41 74 52 65 76 69 73 69 6f  getFileAtRevisio
2300: 6e 20 3a 20 66 75 6e 63 74 69 6f 6e 28 70 61 74  n : function(pat
2310: 68 54 6f 46 69 6c 65 2c 20 72 65 76 29 7b 0d 0a  hToFile, rev){..
2320: 20 20 20 20 20 20 20 20 76 61 72 20 54 65 78 74          var Text
2330: 44 6f 63 20 3d 20 76 38 4e 65 77 28 22 54 65 78  Doc = v8New("Tex
2340: 74 44 6f 63 75 6d 65 6e 74 22 29 3b 0d 0a 20 20  tDocument");..  
2350: 20 20 20 20 20 20 54 65 78 74 44 6f 63 2e d0 97        TextDoc...
2360: d0 b0 d0 bf d0 b8 d1 81 d0 b0 d1 82 d1 8c 28 74  ..............(t
2370: 68 69 73 2e 70 61 74 68 54 6f 54 65 6d 70 4f 75  his.pathToTempOu
2380: 74 70 75 74 2c 20 22 55 54 46 2d 38 22 29 3b 0d  tput, "UTF-8");.
2390: 0a 20 20 20 20 20 20 20 20 0d 0a 20 20 20 20 20  .        ..     
23a0: 20 20 20 76 61 72 20 66 20 3d 20 76 38 4e 65 77     var f = v8New
23b0: 28 22 46 69 6c 65 22 2c 20 70 61 74 68 54 6f 46  ("File", pathToF
23c0: 69 6c 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 69  ile);..        i
23d0: 66 20 28 21 66 2e 45 78 69 73 74 28 29 29 20 0d  f (!f.Exist()) .
23e0: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
23f0: 20 20 20 20 20 20 20 20 4d 65 73 73 61 67 65 28          Message(
2400: 22 20 d1 84 d0 b0 d0 b9 d0 bb d0 b0 20 d1 84 d0  " .......... ...
2410: b8 d0 b7 d0 b8 d1 87 d0 b5 d1 81 d0 ba d0 b8 20  ............... 
2420: d0 bd d0 b5 20 d1 81 d1 83 d1 89 d0 b5 d1 81 d1  .... ...........
2430: 82 d0 b2 d1 83 d0 b5 d1 82 2e 2e 2e 22 29 20 0d  ............") .
2440: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
2450: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  urn null;..     
2460: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 69 66     }..        if
2470: 20 28 28 21 72 65 76 29 20 7c 7c 20 28 72 65 76   ((!rev) || (rev
2480: 2e 6c 65 6e 67 74 68 3d 3d 30 29 29 20 7b 0d 0a  .length==0)) {..
2490: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 76 20              rev 
24a0: 3d 20 22 48 45 41 44 22 0d 0a 20 20 20 20 20 20  = "HEAD"..      
24b0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 76 61 72    }..        var
24c0: 20 72 6f 6f 74 43 61 74 61 6c 6f 67 20 3d 20 74   rootCatalog = t
24d0: 68 69 73 2e 67 65 74 52 6f 6f 74 43 61 74 61 6c  his.getRootCatal
24e0: 6f 67 28 70 61 74 68 54 6f 46 69 6c 65 29 0d 0a  og(pathToFile)..
24f0: 20 20 20 20 20 20 20 20 69 66 20 28 72 65 76 2e          if (rev.
2500: 6c 65 6e 67 74 68 20 21 3d 30 29 20 7b 0d 0a 20  length !=0) {.. 
2510: 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 66             var f
2520: 69 6c 65 72 65 76 20 3d 20 46 53 4f 2e 42 75 69  ilerev = FSO.Bui
2530: 6c 64 50 61 74 68 28 54 65 6d 70 44 69 72 2c 20  ldPath(TempDir, 
2540: 72 65 76 2b 66 2e d0 98 d0 bc d1 8f 29 3b 0d 0a  rev+f.......);..
2550: 20 20 20 20 20 20 20 20 20 20 20 20 54 65 78 74              Text
2560: 44 6f 63 2e 41 64 64 4c 69 6e 65 28 27 63 64 20  Doc.AddLine('cd 
2570: 2f 64 20 22 27 20 2b 72 6f 6f 74 43 61 74 61 6c  /d "' +rootCatal
2580: 6f 67 20 2b 27 22 27 29 0d 0a 20 20 20 20 20 20  og +'"')..      
2590: 20 20 20 20 20 20 54 65 78 74 44 6f 63 2e 41 64        TextDoc.Ad
25a0: 64 4c 69 6e 65 28 27 67 69 74 20 73 68 6f 77 20  dLine('git show 
25b0: 2d 2d 6e 6f 2d 63 6f 6c 6f 72 20 27 2b 72 65 76  --no-color '+rev
25c0: 20 2b 27 3a 22 27 2b 70 61 74 68 54 6f 46 69 6c   +':"'+pathToFil
25d0: 65 2e 72 65 70 6c 61 63 65 28 72 6f 6f 74 43 61  e.replace(rootCa
25e0: 74 61 6c 6f 67 2b 27 5c 5c 27 2c 20 27 27 29 20  talog+'\\', '') 
25f0: 2b 27 22 20 3e 20 27 20 2b 20 66 69 6c 65 72 65  +'" > ' + filere
2600: 76 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  v)..            
2610: 54 65 78 74 44 6f 63 2e 57 72 69 74 65 28 74 68  TextDoc.Write(th
2620: 69 73 2e 70 61 74 68 54 6f 43 6d 64 2c 20 27 63  is.pathToCmd, 'c
2630: 70 38 36 36 27 29 3b 0d 0a 20 20 20 20 20 20 20  p866');..       
2640: 20 20 20 20 20 54 65 78 74 44 6f 63 2e 43 6c 65       TextDoc.Cle
2650: 61 72 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ar();..         
2660: 20 20 20 45 72 72 43 6f 64 65 20 3d 20 57 73 68     ErrCode = Wsh
2670: 53 68 65 6c 6c 2e 52 75 6e 28 27 22 27 2b 74 68  Shell.Run('"'+th
2680: 69 73 2e 70 61 74 68 54 6f 43 6d 64 2b 27 22 27  is.pathToCmd+'"'
2690: 2c 20 30 2c 20 31 29 0d 0a 20 20 20 20 20 20 20  , 0, 1)..       
26a0: 20 20 20 20 20 72 65 74 75 72 6e 20 66 69 6c 65       return file
26b0: 72 65 76 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  rev;..        }.
26c0: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20  .        return 
26d0: 6e 75 6c 6c 0d 0a 20 20 20 20 7d 2c 20 2f 2f 67  null..    }, //g
26e0: 65 74 46 69 6c 65 41 74 52 65 76 69 73 69 6f 6e  etFileAtRevision
26f0: 0d 0a 0d 0a 20 20 20 20 67 65 74 46 69 6c 65 50  ....    getFileP
2700: 61 74 68 54 6f 44 69 66 66 20 3a 20 66 75 6e 63  athToDiff : func
2710: 74 69 6f 6e 28 70 61 72 61 6d 31 2c 20 70 61 72  tion(param1, par
2720: 61 6d 32 29 20 7b 20 2f 2f d1 82 d0 b5 d0 ba d1  am2) { //.......
2730: 83 d1 89 d0 b0 d1 8f 20 d0 b2 d0 b5 d1 80 d1 81  ....... ........
2740: d0 b8 d1 8f 20 d1 84 d0 b0 d0 b9 d0 bb d0 b0 20  .... .......... 
2750: d1 81 20 d0 bf d1 80 d0 b5 d0 b4 d1 8b d0 b4 d1  .. .............
2760: 83 d1 89 d0 b5 d0 b9 2e 2e 2e 0d 0a 20 20 20 20  ............    
2770: 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20 76 61      ..        va
2780: 72 20 54 65 78 74 44 6f 63 20 3d 20 76 38 4e 65  r TextDoc = v8Ne
2790: 77 28 22 54 65 78 74 44 6f 63 75 6d 65 6e 74 22  w("TextDocument"
27a0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 54 65 78 74  );..        Text
27b0: 44 6f 63 2e d0 97 d0 b0 d0 bf d0 b8 d1 81 d0 b0  Doc.............
27c0: d1 82 d1 8c 28 74 68 69 73 2e 70 61 74 68 54 6f  ....(this.pathTo
27d0: 54 65 6d 70 4f 75 74 70 75 74 2c 20 22 55 54 46  TempOutput, "UTF
27e0: 2d 38 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 2f  -8");..        /
27f0: 2f 20 d0 b2 d0 be d0 b7 d0 b2 d1 80 d0 b0 d1 89  / ..............
2800: d0 b0 d1 82 d1 8c 20 d0 b1 d1 83 d0 b4 d0 b5 d0  ...... .........
2810: bc 20 d1 81 d1 82 d1 80 d1 83 d0 ba d1 82 d1 80  . ..............
2820: d1 83 2c 20 70 61 74 68 31 20 d0 b8 20 70 61 74  .., path1 .. pat
2830: 68 32 20 0d 0a 20 20 20 20 20 20 20 20 76 61 72  h2 ..        var
2840: 20 70 61 74 68 54 6f 46 69 6c 65 20 3d 20 70 61   pathToFile = pa
2850: 72 61 6d 31 3b 0d 0a 20 20 20 20 20 20 20 20 76  ram1;..        v
2860: 61 72 20 72 6f 6f 74 43 61 74 61 6c 6f 67 20 3d  ar rootCatalog =
2870: 20 74 68 69 73 2e 67 65 74 52 6f 6f 74 43 61 74   this.getRootCat
2880: 61 6c 6f 67 28 70 61 74 68 54 6f 46 69 6c 65 29  alog(pathToFile)
2890: 3b 0d 0a 20 20 20 20 20 20 20 20 70 61 72 61 6d  ;..        param
28a0: 32 2e 69 6e 73 65 72 74 28 22 70 61 74 68 31 22  2.insert("path1"
28b0: 2c 20 70 61 74 68 54 6f 46 69 6c 65 29 3b 0d 0a  , pathToFile);..
28c0: 20 20 20 20 20 20 20 20 70 61 72 61 6d 32 2e 69          param2.i
28d0: 6e 73 65 72 74 28 22 70 61 74 68 32 22 2c 20 22  nsert("path2", "
28e0: 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 0d 0a 20  ");..        .. 
28f0: 20 20 20 20 20 20 20 76 61 72 20 66 20 3d 20 76         var f = v
2900: 38 4e 65 77 28 22 46 69 6c 65 22 2c 20 70 61 74  8New("File", pat
2910: 68 54 6f 46 69 6c 65 29 3b 0d 0a 20 20 20 20 20  hToFile);..     
2920: 20 20 20 69 66 20 28 21 66 2e 45 78 69 73 74 28     if (!f.Exist(
2930: 29 29 20 72 65 74 75 72 6e 20 66 61 6c 73 65 0d  )) return false.
2940: 0a 20 20 20 20 20 20 20 20 2f 2f 76 61 72 20 70  .        //var p
2950: 61 74 68 32 20 3d 20 47 65 74 54 65 6d 70 46 69  ath2 = GetTempFi
2960: 6c 65 4e 61 6d 65 28 66 2e 45 78 74 65 6e 73 69  leName(f.Extensi
2970: 6f 6e 2e 73 75 62 73 74 72 28 31 29 29 3b 0d 0a  on.substr(1));..
2980: 20 20 20 20 20 20 20 20 76 61 72 20 70 61 74 68          var path
2990: 32 20 3d 20 74 68 69 73 2e 67 65 74 46 69 6c 65  2 = this.getFile
29a0: 41 74 52 65 76 69 73 69 6f 6e 28 70 61 74 68 54  AtRevision(pathT
29b0: 6f 46 69 6c 65 2c 20 22 48 45 41 44 22 29 3b 0d  oFile, "HEAD");.
29c0: 0a 20 20 20 20 20 20 20 20 69 66 20 28 70 61 74  .        if (pat
29d0: 68 32 20 3d 3d 20 6e 75 6c 6c 29 20 7b 0d 0a 20  h2 == null) {.. 
29e0: 20 20 20 20 20 20 20 20 20 20 20 4d 65 73 73 61             Messa
29f0: 67 65 28 22 d0 9d d0 b5 d1 83 d0 b4 d0 b0 d1 87  ge("............
2a00: d0 bd d0 b0 d1 8f 20 d0 bf d0 be d0 bf d1 8b d1  ...... .........
2a10: 82 d0 ba d0 b0 20 d1 81 d0 be d0 b7 d0 b4 d0 b0  ..... ..........
2a20: d1 82 d1 8c 20 d1 84 d0 b0 d0 b9 d0 bb 20 d1 81  .... ........ ..
2a30: 20 d0 bf d0 be d1 81 d0 bb d0 b5 d0 b4 d0 bd d0   ...............
2a40: b5 d0 b9 20 d0 b2 d0 b5 d1 80 d1 81 d0 b8 d0 b5  ... ............
2a50: d0 b9 21 22 29 3b 0d 0a 20 20 20 20 20 20 20 20  ..!");..        
2a60: 7d 20 65 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20  } else {..      
2a70: 20 20 20 20 20 20 2f 2f 20 d0 97 d0 b0 d0 bf d1        // .......
2a80: 83 d1 81 d1 82 d0 b8 d0 bc 20 73 68 65 6c 6c 20  ......... shell 
2a90: d0 b8 20 d0 bd d0 b0 d0 b9 d0 b4 d0 b5 d0 bc 20  .. ............ 
2aa0: d0 b2 d0 b5 d1 80 d1 81 d0 b8 d0 b8 20 d1 84 d0  ............ ...
2ab0: b0 d0 b9 d0 bb d0 be d0 b2 2e 20 0d 0a 20 20 20  .......... ..   
2ac0: 20 20 20 20 20 20 20 20 20 76 61 72 20 66 20 3d           var f =
2ad0: 20 76 38 4e 65 77 28 22 46 69 6c 65 22 2c 20 70   v8New("File", p
2ae0: 61 74 68 32 29 3b 0d 0a 20 20 20 20 20 20 20 20  ath2);..        
2af0: 20 20 20 20 69 66 20 28 21 66 2e 45 78 69 73 74      if (!f.Exist
2b00: 28 29 29 20 7b 20 2f 2f 20 d0 a4 d0 b0 d0 b9 d0  ()) { // .......
2b10: bb 20 d0 b1 d1 83 d0 b4 d0 b5 d1 82 20 d0 b2 d1  . .......... ...
2b20: 81 d0 b5 20 d1 80 d0 b0 d0 b2 d0 bd d0 be 2c 20  ... .........., 
2b30: d0 bd d0 be 20 d0 bf d1 83 d1 81 d1 82 d0 be d0  .... ...........
2b40: b9 2e 20 d0 94 d1 83 d0 bc d0 b0 d1 8e 20 d0 bf  .. .......... ..
2b50: d1 80 d0 be d1 81 d1 82 d1 8f d1 82 2e 20 0d 0a  ............. ..
2b60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b70: 4d 65 73 73 61 67 65 28 22 d0 9d d0 b5 20 d1 81  Message(".... ..
2b80: d0 be d0 b7 d0 b4 d0 b0 d0 bb d1 81 d1 8f 20 d1  .............. .
2b90: 84 d0 b0 d0 b9 d0 bb 2c 20 d0 b3 d0 b4 d0 b5 2d  ......., ......-
2ba0: d1 82 d0 be 20 d1 82 d1 83 d1 82 20 d0 be d1 88  .... ...... ....
2bb0: d0 b8 d0 b1 d0 be d1 87 d0 ba d0 b0 2e 20 22 29  ............. ")
2bc0: 20 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   ;..            
2bd0: 7d 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20 7d  }    ..        }
2be0: 0d 0a 20 20 20 20 20 20 20 20 70 61 72 61 6d 32  ..        param2
2bf0: 2e 69 6e 73 65 72 74 28 22 70 61 74 68 32 22 2c  .insert("path2",
2c00: 20 70 61 74 68 32 29 3b 0d 0a 20 20 20 20 20 20   path2);..      
2c10: 20 20 0d 0a 20 20 20 20 20 20 20 20 72 65 74 75    ..        retu
2c20: 72 6e 20 74 72 75 65 0d 0a 20 20 20 20 7d 2c 20  rn true..    }, 
2c30: 2f 2f 67 65 74 46 69 6c 65 50 61 74 68 54 6f 44  //getFilePathToD
2c40: 69 66 66 0d 0a 0d 0a 20 20 20 20 67 65 74 4c 6f  iff....    getLo
2c50: 67 20 3a 20 66 75 6e 63 74 69 6f 6e 28 70 61 74  g : function(pat
2c60: 68 54 6f 46 69 6c 65 2c 20 6c 69 6d 69 74 29 20  hToFile, limit) 
2c70: 7b 20 0d 0a 20 20 20 20 20 20 20 20 2f 2f d0 b5  { ..        //..
2c80: d1 81 d0 bb d0 b8 20 d0 ba d0 b0 d1 82 d0 b0 d0  ...... .........
2c90: bb d0 be d0 b3 2c 20 d1 82 d0 be d0 b3 d0 b4 d0  ....., .........
2ca0: b0 20 d0 b8 d0 bd d1 84 d0 be d1 80 d0 bc d0 b0  . ..............
2cb0: d1 86 d0 b8 d1 8f 20 d0 b4 d0 bb d1 8f 20 d0 ba  ...... ...... ..
2cc0: d0 b0 d1 82 d0 b0 d0 bb d0 be d0 b3 d0 b0 2c 20  .............., 
2cd0: d0 b5 d1 81 d0 bb d0 b8 20 d1 84 d0 b0 d0 b9 d0  ........ .......
2ce0: bb 2c 20 d1 82 d0 be d0 b3 d0 b4 d0 b0 20 d0 bb  ., .......... ..
2cf0: d0 be d0 b3 20 d0 b4 d0 bb d1 8f 20 d1 84 d0 b0  .... ...... ....
2d00: d0 b9 d0 bb d0 b0 2e 20 0d 0a 20 20 20 20 20 20  ....... ..      
2d10: 20 20 2f 2f d0 92 d0 be d0 b7 d0 b2 d1 80 d0 b0    //............
2d20: d1 89 d0 b0 d0 b5 d0 bc 20 d0 bc d0 b0 d1 81 d1  ........ .......
2d30: 81 d0 b8 d0 b2 20 d1 81 d0 be 20 d1 81 d1 82 d1  ..... .... .....
2d40: 83 d1 80 d0 ba d1 82 d1 83 d1 80 d0 be d0 b9 3a  ...............:
2d50: 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 61 72 72  ..        // arr
2d60: 61 72 79 5b 30 5d 5b 27 76 65 72 73 69 6f 6e 27  ary[0]['version'
2d70: 3a 31 32 32 33 33 33 2c 20 27 63 6f 6d 6d 65 6e  :122333, 'commen
2d80: 74 27 3a 22 d0 a7 d0 b5 20 d1 82 d0 be 20 d0 bd  t':".... .... ..
2d90: d0 b0 d0 bf d0 b8 d1 81 d0 b0 d0 bb d0 b8 22 2c  ..............",
2da0: 20 27 61 75 74 68 6f 72 27 3a 22 73 6f 73 6e 61   'author':"sosna
2db0: 22 2c 20 27 64 61 74 65 27 3a 22 32 30 31 32 2d  ", 'date':"2012-
2dc0: 30 34 2d 30 31 22 5d 0d 0a 20 20 20 20 20 20 20  04-01"]..       
2dd0: 20 76 61 72 20 72 65 73 75 6c 74 20 3d 20 5b 5d   var result = []
2de0: 3b 0d 0a 20 20 20 20 20 20 20 20 66 20 3d 20 76  ;..        f = v
2df0: 38 4e 65 77 28 22 46 69 6c 65 22 2c 20 70 61 74  8New("File", pat
2e00: 68 54 6f 46 69 6c 65 29 3b 0d 0a 20 20 20 20 20  hToFile);..     
2e10: 20 20 20 69 66 20 28 21 66 2e 45 78 69 73 74 28     if (!f.Exist(
2e20: 29 29 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74  )) return result
2e30: 3b 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20 72  ;..        var r
2e40: 6f 6f 74 43 61 74 61 6c 6f 67 20 3d 20 74 68 69  ootCatalog = thi
2e50: 73 2e 67 65 74 52 6f 6f 74 43 61 74 61 6c 6f 67  s.getRootCatalog
2e60: 28 70 61 74 68 54 6f 46 69 6c 65 29 3b 0d 0a 20  (pathToFile);.. 
2e70: 20 20 20 20 20 20 20 76 61 72 20 54 65 78 74 44         var TextD
2e80: 6f 63 20 3d 20 76 38 4e 65 77 28 22 54 65 78 74  oc = v8New("Text
2e90: 44 6f 63 75 6d 65 6e 74 22 29 3b 0d 0a 20 20 20  Document");..   
2ea0: 20 20 20 20 20 54 65 78 74 44 6f 63 2e 41 64 64       TextDoc.Add
2eb0: 4c 69 6e 65 28 27 63 64 20 2f 64 20 22 27 2b 72  Line('cd /d "'+r
2ec0: 6f 6f 74 43 61 74 61 6c 6f 67 2b 27 22 27 29 3b  ootCatalog+'"');
2ed0: 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20 74 65  ..        var te
2ee0: 78 74 4c 69 6d 69 74 20 3d 20 6c 69 6d 69 74 3e  xtLimit = limit>
2ef0: 30 3f 27 2d 27 2b 6c 69 6d 69 74 20 3a 20 27 27  0?'-'+limit : ''
2f00: 3b 0d 0a 20 20 20 20 20 20 20 20 54 65 78 74 44  ;..        TextD
2f10: 6f 63 2e 41 64 64 4c 69 6e 65 28 27 67 69 74 20  oc.AddLine('git 
2f20: 6c 6f 67 20 2d 2d 64 61 74 65 3d 69 73 6f 20 2d  log --date=iso -
2f30: 2d 65 6e 63 6f 64 69 6e 67 3d 55 54 46 2d 38 20  -encoding=UTF-8 
2f40: 2d 2d 70 72 65 74 74 79 3d 66 6f 72 6d 61 74 3a  --pretty=format:
2f50: 22 25 25 68 25 25 78 30 39 25 25 61 6e 25 25 78  "%%h%%x09%%an%%x
2f60: 30 39 25 25 61 64 25 25 78 30 39 25 25 73 22 20  09%%ad%%x09%%s" 
2f70: 27 2b 74 65 78 74 4c 69 6d 69 74 2b 27 20 27 2b  '+textLimit+' '+
2f80: 70 61 74 68 54 6f 46 69 6c 65 2e 72 65 70 6c 61  pathToFile.repla
2f90: 63 65 28 72 6f 6f 74 43 61 74 61 6c 6f 67 2b 27  ce(rootCatalog+'
2fa0: 5c 5c 27 2c 20 27 27 29 2b 27 20 3e 22 27 2b 74  \\', '')+' >"'+t
2fb0: 68 69 73 2e 70 61 74 68 54 6f 54 65 6d 70 4f 75  his.pathToTempOu
2fc0: 74 70 75 74 2b 27 22 27 29 3b 0d 0a 20 20 20 20  tput+'"');..    
2fd0: 20 20 20 20 54 65 78 74 44 6f 63 2e 57 72 69 74      TextDoc.Writ
2fe0: 65 28 74 68 69 73 2e 70 61 74 68 54 6f 43 6d 64  e(this.pathToCmd
2ff0: 2c 20 27 63 70 38 36 36 27 29 3b 0d 0a 20 20 20  , 'cp866');..   
3000: 20 20 20 20 20 45 72 72 43 6f 64 65 20 3d 20 57       ErrCode = W
3010: 73 68 53 68 65 6c 6c 2e 52 75 6e 28 27 22 27 2b  shShell.Run('"'+
3020: 74 68 69 73 2e 70 61 74 68 54 6f 43 6d 64 2b 27  this.pathToCmd+'
3030: 22 27 2c 20 30 2c 20 31 29 0d 0a 20 20 20 20 20  "', 0, 1)..     
3040: 20 20 20 54 65 78 74 44 6f 63 2e 43 6c 65 61 72     TextDoc.Clear
3050: 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 54 65 78  ();..        Tex
3060: 74 44 6f 63 2e 52 65 61 64 28 74 68 69 73 2e 70  tDoc.Read(this.p
3070: 61 74 68 54 6f 54 65 6d 70 4f 75 74 70 75 74 2c  athToTempOutput,
3080: 20 22 55 54 46 2d 38 22 29 3b 0d 0a 20 20 20 20   "UTF-8");..    
3090: 20 20 20 20 0d 0a 20 20 20 20 20 20 20 20 69 66      ..        if
30a0: 20 28 54 65 78 74 44 6f 63 2e 4c 69 6e 65 43 6f   (TextDoc.LineCo
30b0: 75 6e 74 28 29 20 3d 3d 20 30 29 20 7b 0d 0a 20  unt() == 0) {.. 
30c0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
30d0: 6e 20 72 65 73 75 6c 74 20 0d 0a 20 20 20 20 20  n result ..     
30e0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 76 61     }..        va
30f0: 72 20 69 6e 64 65 78 3d 30 3b 0d 0a 20 20 20 20  r index=0;..    
3100: 20 20 20 20 66 6f 72 20 28 76 61 72 20 69 3d 31      for (var i=1
3110: 3b 20 69 3c 3d 54 65 78 74 44 6f 63 2e 4c 69 6e  ; i<=TextDoc.Lin
3120: 65 43 6f 75 6e 74 28 29 3b 20 69 2b 2b 29 0d 0a  eCount(); i++)..
3130: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
3140: 20 20 20 20 20 20 20 76 61 72 20 72 20 3d 20 54         var r = T
3150: 65 78 74 44 6f 63 2e 47 65 74 4c 69 6e 65 28 69  extDoc.GetLine(i
3160: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
3170: 76 61 72 20 72 65 20 3d 20 6e 65 77 20 52 65 67  var re = new Reg
3180: 45 78 70 28 2f 5e 28 2e 2a 29 5c 74 28 2e 2a 29  Exp(/^(.*)\t(.*)
3190: 5c 74 28 2e 2a 29 5c 74 28 2e 2a 29 24 2f 29 3b  \t(.*)\t(.*)$/);
31a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 61  ..            va
31b0: 72 20 6d 61 74 68 65 73 20 3d 20 72 2e 6d 61 74  r mathes = r.mat
31c0: 63 68 28 72 65 29 3b 0d 0a 20 20 20 20 20 20 20  ch(re);..       
31d0: 20 20 20 20 20 69 66 20 28 6d 61 74 68 65 73 20       if (mathes 
31e0: 26 26 20 6d 61 74 68 65 73 2e 6c 65 6e 67 74 68  && mathes.length
31f0: 29 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) {..           
3200: 20 20 20 20 20 72 65 73 75 6c 74 5b 69 6e 64 65       result[inde
3210: 78 5d 20 3d 20 7b 22 76 65 72 73 69 6f 6e 22 3a  x] = {"version":
3220: 6d 61 74 68 65 73 5b 31 5d 2c 20 22 63 6f 6d 6d  mathes[1], "comm
3230: 65 6e 74 22 3a 27 27 2b 6d 61 74 68 65 73 5b 34  ent":''+mathes[4
3240: 5d 2c 20 22 64 61 74 65 22 3a 6d 61 74 68 65 73  ], "date":mathes
3250: 5b 33 5d 2c 20 22 61 75 74 68 6f 72 22 3a 6d 61  [3], "author":ma
3260: 74 68 65 73 5b 32 5d 7d 0d 0a 20 20 20 20 20 20  thes[2]}..      
3270: 20 20 20 20 20 20 20 20 20 20 69 6e 64 65 78 2b            index+
3280: 2b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  +;..            
3290: 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  }..        }..  
32a0: 20 20 20 20 20 20 2f 2f 20 67 69 74 20 6c 6f 67        // git log
32b0: 20 2d 2d 64 61 74 65 3d 69 73 6f 20 2d 2d 65 6e   --date=iso --en
32c0: 63 6f 64 69 6e 67 3d 55 54 46 2d 38 20 2d 2d 70  coding=UTF-8 --p
32d0: 72 65 74 74 79 3d 66 6f 72 6d 61 74 3a 22 25 68  retty=format:"%h
32e0: 25 78 30 39 25 61 6e 25 78 30 39 25 61 64 25 78  %x09%an%x09%ad%x
32f0: 30 39 25 73 22 0d 0a 20 20 20 20 20 20 20 20 72  09%s"..        r
3300: 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 20 20 20  eturn result;   
3310: 20 0d 0a 20 20 20 20 7d 2c 20 2f 2f 20 67 65 74   ..    }, // get
3320: 4c 6f 67 0d 0a 0d 0a 20 20 20 20 67 65 74 49 6e  Log....    getIn
3330: 66 6f 20 3a 20 66 75 6e 63 74 69 6f 6e 28 70 61  fo : function(pa
3340: 74 68 54 6f 46 69 6c 65 2c 20 76 65 72 29 7b 0d  thToFile, ver){.
3350: 0a 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20 72  ...        var r
3360: 65 73 75 6c 74 20 3d 20 7b 22 63 6f 6d 6d 65 6e  esult = {"commen
3370: 74 22 3a 22 22 2c 20 22 66 69 6c 65 73 22 3a 5b  t":"", "files":[
3380: 5d 7d 0d 0a 20 20 20 20 20 20 20 20 76 61 72 20  ]}..        var 
3390: 72 6f 6f 74 43 61 74 61 6c 6f 67 20 3d 20 74 68  rootCatalog = th
33a0: 69 73 2e 67 65 74 52 6f 6f 74 43 61 74 61 6c 6f  is.getRootCatalo
33b0: 67 28 70 61 74 68 54 6f 46 69 6c 65 29 3b 0d 0a  g(pathToFile);..
33c0: 20 20 20 20 20 20 20 20 76 61 72 20 54 65 78 74          var Text
33d0: 44 6f 63 20 3d 20 76 38 4e 65 77 28 22 54 65 78  Doc = v8New("Tex
33e0: 74 44 6f 63 75 6d 65 6e 74 22 29 3b 0d 0a 20 20  tDocument");..  
33f0: 20 20 20 20 20 20 54 65 78 74 44 6f 63 2e 41 64        TextDoc.Ad
3400: 64 4c 69 6e 65 28 27 63 64 20 2f 64 20 22 27 2b  dLine('cd /d "'+
3410: 72 6f 6f 74 43 61 74 61 6c 6f 67 2b 27 22 27 29  rootCatalog+'"')
3420: 0d 0a 20 20 20 20 20 20 20 20 54 65 78 74 44 6f  ..        TextDo
3430: 63 2e 41 64 64 4c 69 6e 65 28 27 20 67 69 74 20  c.AddLine(' git 
3440: 6c 6f 67 20 2d 2d 6e 6f 2d 63 6f 6c 6f 72 20 2d  log --no-color -
3450: 2d 65 6e 63 6f 64 69 6e 67 3d 55 54 46 2d 38 20  -encoding=UTF-8 
3460: 2d 2d 72 61 77 20 2d 2d 64 61 74 65 3d 69 73 6f  --raw --date=iso
3470: 20 2d 2d 70 72 65 74 74 79 3d 66 75 6c 6c 65 72   --pretty=fuller
3480: 20 2d 2d 70 61 72 65 6e 74 73 20 2d 31 20 27 2b   --parents -1 '+
3490: 76 65 72 20 2b 27 20 3e 20 22 27 2b 74 68 69 73  ver +' > "'+this
34a0: 2e 70 61 74 68 54 6f 54 65 6d 70 4f 75 74 70 75  .pathToTempOutpu
34b0: 74 2b 27 22 27 29 0d 0a 20 20 20 20 20 20 20 20  t+'"')..        
34c0: 54 65 78 74 44 6f 63 2e 57 72 69 74 65 28 74 68  TextDoc.Write(th
34d0: 69 73 2e 70 61 74 68 54 6f 43 6d 64 2c 20 27 63  is.pathToCmd, 'c
34e0: 70 38 36 36 27 29 3b 0d 0a 20 20 20 20 20 20 20  p866');..       
34f0: 20 45 72 72 43 6f 64 65 20 3d 20 57 73 68 53 68   ErrCode = WshSh
3500: 65 6c 6c 2e 52 75 6e 28 27 22 27 2b 74 68 69 73  ell.Run('"'+this
3510: 2e 70 61 74 68 54 6f 43 6d 64 2b 27 22 27 2c 20  .pathToCmd+'"', 
3520: 30 2c 20 31 29 0d 0a 20 20 20 20 20 20 20 20 54  0, 1)..        T
3530: 65 78 74 44 6f 63 2e 43 6c 65 61 72 28 29 3b 0d  extDoc.Clear();.
3540: 0a 20 20 20 20 20 20 20 20 54 65 78 74 44 6f 63  .        TextDoc
3550: 2e 52 65 61 64 28 74 68 69 73 2e 70 61 74 68 54  .Read(this.pathT
3560: 6f 54 65 6d 70 4f 75 74 70 75 74 2c 20 22 55 54  oTempOutput, "UT
3570: 46 2d 38 22 29 3b 0d 0a 20 20 20 20 20 20 20 20  F-8");..        
3580: 69 66 20 28 54 65 78 74 44 6f 63 2e 4c 69 6e 65  if (TextDoc.Line
3590: 43 6f 75 6e 74 28 29 20 3d 3d 20 30 29 20 7b 0d  Count() == 0) {.
35a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
35b0: 75 72 6e 20 72 65 73 75 6c 74 20 0d 0a 20 20 20  urn result ..   
35c0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
35d0: 76 61 72 20 69 6e 64 65 78 3d 30 3b 0d 0a 20 20  var index=0;..  
35e0: 20 20 20 20 20 20 66 6f 72 20 28 76 61 72 20 69        for (var i
35f0: 3d 31 3b 20 69 3c 3d 54 65 78 74 44 6f 63 2e 4c  =1; i<=TextDoc.L
3600: 69 6e 65 43 6f 75 6e 74 28 29 3b 20 69 2b 2b 29  ineCount(); i++)
3610: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
3620: 20 20 20 20 20 20 20 20 20 76 61 72 20 72 20 3d           var r =
3630: 20 54 65 78 74 44 6f 63 2e 47 65 74 4c 69 6e 65   TextDoc.GetLine
3640: 28 69 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  (i);..          
3650: 20 20 72 65 5f 66 69 6c 65 73 20 3d 20 6e 65 77    re_files = new
3660: 20 52 65 67 45 78 70 28 2f 5e 3a 5c 64 2b 5c 73   RegExp(/^:\d+\s
3670: 2b 5c 64 2b 5c 73 2b 5b 30 2d 39 61 2d 66 2e 5d  +\d+\s+[0-9a-f.]
3680: 2b 5c 73 2b 5b 30 2d 39 61 2d 66 2e 5d 2b 5c 73  +\s+[0-9a-f.]+\s
3690: 2b 28 5c 77 29 5c 74 28 2e 2b 29 24 2f 29 3b 0d  +(\w)\t(.+)$/);.
36a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72  .            var
36b0: 20 6d 61 74 68 65 73 20 3d 20 72 2e 6d 61 74 63   mathes = r.matc
36c0: 68 28 72 65 5f 66 69 6c 65 73 29 3b 0d 0a 20 20  h(re_files);..  
36d0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 61            if (ma
36e0: 74 68 65 73 20 26 26 20 6d 61 74 68 65 73 2e 6c  thes && mathes.l
36f0: 65 6e 67 74 68 29 20 7b 0d 0a 20 20 20 20 20 20  ength) {..      
3700: 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74            result
3710: 5b 27 66 69 6c 65 73 27 5d 5b 69 6e 64 65 78 5d  ['files'][index]
3720: 20 3d 20 7b 22 76 65 72 73 69 6f 6e 22 3a 76 65   = {"version":ve
3730: 72 2c 20 22 66 69 6c 65 22 3a 27 27 2b 6d 61 74  r, "file":''+mat
3740: 68 65 73 5b 32 5d 2c 20 22 73 74 61 74 75 73 22  hes[2], "status"
3750: 3a 6d 61 74 68 65 73 5b 31 5d 2c 20 22 66 75 6c  :mathes[1], "ful
3760: 6c 70 61 74 68 22 3a 46 53 4f 2e 42 75 69 6c 64  lpath":FSO.Build
3770: 50 61 74 68 28 72 6f 6f 74 43 61 74 61 6c 6f 67  Path(rootCatalog
3780: 2c 20 6d 61 74 68 65 73 5b 32 5d 2e 72 65 70 6c  , mathes[2].repl
3790: 61 63 65 28 2f 5c 2f 2f 67 2c 20 27 5c 5c 27 29  ace(/\//g, '\\')
37a0: 29 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  )}..            
37b0: 20 20 20 20 69 6e 64 65 78 2b 2b 3b 0d 0a 20 20      index++;..  
37c0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
37d0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
37e0: 72 65 73 75 6c 74 5b 22 63 6f 6d 6d 65 6e 74 22  result["comment"
37f0: 5d 20 3d 20 54 65 78 74 44 6f 63 2e 47 65 74 54  ] = TextDoc.GetT
3800: 65 78 74 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ext();....      
3810: 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 0d    return result.
3820: 0a 20 20 20 20 7d 2c 0d 0a 0d 0a 20 20 20 20 63  .    },....    c
3830: 6f 6d 6d 69 74 20 3a 20 66 75 6e 63 74 69 6f 6e  ommit : function
3840: 28 70 61 74 68 54 6f 46 69 6c 65 2c 20 6d 65 73  (pathToFile, mes
3850: 73 61 67 65 29 20 7b 0d 0a 20 20 20 20 20 20 20  sage) {..       
3860: 20 76 61 72 20 72 6f 6f 74 43 61 74 61 6c 6f 67   var rootCatalog
3870: 20 3d 20 74 68 69 73 2e 67 65 74 52 6f 6f 74 43   = this.getRootC
3880: 61 74 61 6c 6f 67 28 70 61 74 68 54 6f 46 69 6c  atalog(pathToFil
3890: 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 76 61 72  e);..        var
38a0: 20 74 65 6d 70 66 69 6c 65 20 3d 20 47 65 74 54   tempfile = GetT
38b0: 65 6d 70 46 69 6c 65 4e 61 6d 65 28 22 74 78 74  empFileName("txt
38c0: 22 29 3b 0d 0a 20 20 20 20 20 20 20 20 76 61 72  ");..        var
38d0: 20 66 20 3d 20 76 38 4e 65 77 28 22 46 69 6c 65   f = v8New("File
38e0: 22 2c 20 70 61 74 68 54 6f 46 69 6c 65 29 3b 0d  ", pathToFile);.
38f0: 0a 20 20 20 20 20 20 20 20 69 66 20 28 66 2e 49  .        if (f.I
3900: 73 44 69 72 65 63 74 6f 72 79 28 29 29 20 7b 0d  sDirectory()) {.
3910: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 61 74  .            pat
3920: 68 54 6f 46 69 6c 65 20 3d 20 27 20 2d 61 27 0d  hToFile = ' -a'.
3930: 0a 20 20 20 20 20 20 20 20 7d 20 65 6c 73 65 20  .        } else 
3940: 7b 20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  { ..            
3950: 70 61 74 68 54 6f 46 69 6c 65 20 3d 20 27 22 27  pathToFile = '"'
3960: 2b 70 61 74 68 54 6f 46 69 6c 65 2e 72 65 70 6c  +pathToFile.repl
3970: 61 63 65 28 72 6f 6f 74 43 61 74 61 6c 6f 67 2b  ace(rootCatalog+
3980: 27 5c 5c 27 2c 20 27 27 29 2b 27 22 27 0d 0a 20  '\\', '')+'"'.. 
3990: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
39a0: 20 20 76 61 72 20 54 65 78 74 44 6f 63 20 3d 20    var TextDoc = 
39b0: 76 38 4e 65 77 28 22 54 65 78 74 44 6f 63 75 6d  v8New("TextDocum
39c0: 65 6e 74 22 29 3b 0d 0a 20 20 20 20 20 20 20 20  ent");..        
39d0: 54 65 78 74 44 6f 63 2e 57 72 69 74 65 28 74 68  TextDoc.Write(th
39e0: 69 73 2e 70 61 74 68 54 6f 43 6d 64 29 3b 0d 0a  is.pathToCmd);..
39f0: 20 20 20 20 20 20 20 20 54 65 78 74 44 6f 63 2e          TextDoc.
3a00: 41 64 64 4c 69 6e 65 28 27 63 64 20 2f 64 20 22  AddLine('cd /d "
3a10: 27 2b 72 6f 6f 74 43 61 74 61 6c 6f 67 2b 27 22  '+rootCatalog+'"
3a20: 27 29 0d 0a 20 20 20 20 20 20 20 20 54 65 78 74  ')..        Text
3a30: 44 6f 63 2e 41 64 64 4c 69 6e 65 28 27 67 69 74  Doc.AddLine('git
3a40: 20 63 6f 6d 6d 69 74 20 27 20 2b 70 61 74 68 54   commit ' +pathT
3a50: 6f 46 69 6c 65 2b 27 20 2d 2d 66 69 6c 65 3d 22  oFile+' --file="
3a60: 27 2b 74 65 6d 70 66 69 6c 65 2b 27 22 27 29 3b  '+tempfile+'"');
3a70: 0d 0a 20 20 20 20 20 20 20 20 54 65 78 74 44 6f  ..        TextDo
3a80: 63 2e 41 64 64 4c 69 6e 65 28 27 65 78 69 74 27  c.AddLine('exit'
3a90: 29 3b 0d 0a 20 20 20 20 20 20 20 20 0d 0a 20 20  );..        ..  
3aa0: 20 20 20 20 20 20 54 65 78 74 44 6f 63 2e 57 72        TextDoc.Wr
3ab0: 69 74 65 28 74 68 69 73 2e 70 61 74 68 54 6f 43  ite(this.pathToC
3ac0: 6d 64 2c 20 27 63 70 38 36 36 27 29 3b 0d 0a 20  md, 'cp866');.. 
3ad0: 20 20 20 20 20 20 20 0d 0a 20 20 20 20 20 20 20         ..       
3ae0: 20 54 65 78 74 44 6f 63 2e 43 6c 65 61 72 28 29   TextDoc.Clear()
3af0: 3b 0d 0a 20 20 20 20 20 20 20 20 54 65 78 74 44  ;..        TextD
3b00: 6f 63 2e 53 65 74 54 65 78 74 28 6d 65 73 73 61  oc.SetText(messa
3b10: 67 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 54 65  ge);..        Te
3b20: 78 74 44 6f 63 2e 57 72 69 74 65 28 74 65 6d 70  xtDoc.Write(temp
3b30: 66 69 6c 65 2c 20 27 55 54 46 2d 38 27 29 3b 0d  file, 'UTF-8');.
3b40: 0a 20 20 20 20 20 20 20 20 45 72 72 43 6f 64 65  .        ErrCode
3b50: 20 3d 20 57 73 68 53 68 65 6c 6c 2e 52 75 6e 28   = WshShell.Run(
3b60: 27 22 27 2b 74 68 69 73 2e 70 61 74 68 54 6f 43  '"'+this.pathToC
3b70: 6d 64 2b 27 22 27 2c 20 31 2c 20 31 29 0d 0a 20  md+'"', 1, 1).. 
3b80: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 45 72         return Er
3b90: 72 43 6f 64 65 0d 0a 20 20 20 20 7d 2c 20 2f 2f  rCode..    }, //
3ba0: 63 6f 6d 6d 69 74 0d 0a 0d 0a 0d 0a 0d 0a 20 20  commit........  
3bb0: 20 20 72 75 6e 20 3a 20 66 75 6e 63 74 69 6f 6e    run : function
3bc0: 28 70 61 74 68 54 6f 46 69 6c 65 29 7b 0d 0a 20  (pathToFile){.. 
3bd0: 20 20 20 20 20 20 20 76 61 72 20 72 6f 6f 74 43         var rootC
3be0: 61 74 61 6c 6f 67 20 3d 20 74 68 69 73 2e 67 65  atalog = this.ge
3bf0: 74 52 6f 6f 74 43 61 74 61 6c 6f 67 28 70 61 74  tRootCatalog(pat
3c00: 68 54 6f 46 69 6c 65 29 3b 0d 0a 20 20 20 20 20  hToFile);..     
3c10: 20 20 20 76 61 72 20 54 65 78 74 44 6f 63 20 3d     var TextDoc =
3c20: 20 76 38 4e 65 77 28 22 54 65 78 74 44 6f 63 75   v8New("TextDocu
3c30: 6d 65 6e 74 22 29 3b 0d 0a 20 20 20 20 20 20 20  ment");..       
3c40: 20 54 65 78 74 44 6f 63 2e 41 64 64 4c 69 6e 65   TextDoc.AddLine
3c50: 28 27 63 64 20 2f 64 20 22 27 2b 72 6f 6f 74 43  ('cd /d "'+rootC
3c60: 61 74 61 6c 6f 67 2b 27 22 27 29 3b 0d 0a 20 20  atalog+'"');..  
3c70: 20 20 20 20 20 20 54 65 78 74 44 6f 63 2e 41 64        TextDoc.Ad
3c80: 64 4c 69 6e 65 28 27 73 74 61 72 74 20 63 6d 64  dLine('start cmd
3c90: 2e 65 78 65 27 29 0d 0a 20 20 20 20 20 20 20 20  .exe')..        
3ca0: 54 65 78 74 44 6f 63 2e 57 72 69 74 65 28 74 68  TextDoc.Write(th
3cb0: 69 73 2e 70 61 74 68 54 6f 43 6d 64 2c 20 27 63  is.pathToCmd, 'c
3cc0: 70 38 36 36 27 29 3b 0d 0a 20 20 20 20 0d 0a 20  p866');..    .. 
3cd0: 20 20 20 20 20 20 20 d0 97 d0 b0 d0 bf d1 83 d1         .........
3ce0: 81 d1 82 d0 b8 d1 82 d1 8c d0 9f d1 80 d0 b8 d0  ................
3cf0: bb d0 be d0 b6 d0 b5 d0 bd d0 b8 d0 b5 28 74 68  .............(th
3d00: 69 73 2e 70 61 74 68 54 6f 43 6d 64 2c 20 22 22  is.pathToCmd, ""
3d10: 2c 20 74 72 75 65 29 3b 0d 0a 20 20 20 20 20 20  , true);..      
3d20: 20 20 54 65 78 74 44 6f 63 20 3d 20 6e 75 6c 6c    TextDoc = null
3d30: 3b 0d 0a 20 20 20 20 7d 20 2f 2f 72 75 6e 0d 0a  ;..    } //run..
3d40: 0d 0a 0d 0a 0d 0a 7d 29 3b 20 2f 2f 20 0d 0a 0d  ......}); // ...
3d50: 0a 0d 0a 66 75 6e 63 74 69 6f 6e 20 62 61 63 6b  ...function back
3d60: 65 6e 64 5f 67 69 74 20 28 63 6f 6d 6d 61 6e 64  end_git (command
3d70: 2c 20 70 61 72 61 6d 31 2c 20 70 61 72 61 6d 32  , param1, param2
3d80: 29 20 7b 0d 0a 20 20 20 20 76 61 72 20 72 65 73  ) {..    var res
3d90: 75 6c 74 20 3d 20 66 61 6c 73 65 3b 0d 0a 20 20  ult = false;..  
3da0: 20 20 67 69 74 20 3d 20 47 65 74 42 61 63 6b 65    git = GetBacke
3db0: 6e 64 47 69 74 28 29 3b 0d 0a 0d 0a 20 20 20 20  ndGit();....    
3dc0: 73 77 69 74 63 68 20 28 63 6f 6d 6d 61 6e 64 29  switch (command)
3dd0: 20 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 63 61   ..    {..    ca
3de0: 73 65 20 22 43 41 54 41 4c 4f 47 53 54 41 54 55  se "CATALOGSTATU
3df0: 53 22 3a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20  S":..        // 
3e00: d0 94 d0 be d0 b1 d0 b0 d0 b2 d0 bb d1 8f d0 b5  ................
3e10: d0 bc 20 d0 b2 20 d1 85 d0 b2 d0 be d1 81 d1 82  .. .. ..........
3e20: 20 d0 bf d0 be d0 b4 d0 bf d0 b8 d1 81 d1 8c 2e   ...............
3e30: 0d 0a 20 20 20 20 20 20 20 20 72 65 73 75 6c 74  ..        result
3e40: 20 3d 20 67 69 74 2e 67 65 74 53 74 61 74 75 73   = git.getStatus
3e50: 46 6f 72 43 61 74 61 6c 6f 67 28 70 61 72 61 6d  ForCatalog(param
3e60: 31 2c 20 22 22 29 3b 0d 0a 20 20 20 20 20 20 20  1, "");..       
3e70: 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 63 61 73   break;..    cas
3e80: 65 20 22 46 49 4c 45 53 54 41 54 55 53 22 3a 0d  e "FILESTATUS":.
3e90: 0a 20 20 20 20 09 72 65 73 75 6c 74 20 3d 20 67  .    .result = g
3ea0: 69 74 2e 67 65 74 46 69 6c 65 53 74 61 74 75 73  it.getFileStatus
3eb0: 28 70 61 72 61 6d 31 2c 20 70 61 72 61 6d 32 29  (param1, param2)
3ec0: 3b 0d 0a 20 20 20 20 20 20 20 20 62 72 65 61 6b  ;..        break
3ed0: 3b 0d 0a 20 20 20 20 63 61 73 65 20 22 54 45 53  ;..    case "TES
3ee0: 54 22 3a 0d 0a 20 20 20 20 20 20 20 20 72 65 73  T":..        res
3ef0: 75 6c 74 20 3d 20 67 69 74 2e 74 65 73 74 28 70  ult = git.test(p
3f00: 61 72 61 6d 31 29 3b 0d 0a 20 20 20 20 20 20 20  aram1);..       
3f10: 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 63 61 73   break;..    cas
3f20: 65 20 22 41 44 44 22 3a 0d 0a 20 20 20 20 20 20  e "ADD":..      
3f30: 20 20 72 65 73 75 6c 74 20 3d 20 67 69 74 2e 61    result = git.a
3f40: 64 64 28 70 61 72 61 6d 31 2c 20 70 61 72 61 6d  dd(param1, param
3f50: 32 29 0d 0a 20 20 20 20 20 20 20 20 62 72 65 61  2)..        brea
3f60: 6b 3b 0d 0a 20 20 20 20 63 61 73 65 20 22 47 45  k;..    case "GE
3f70: 54 46 49 4c 45 41 54 52 45 56 49 53 49 4f 4e 22  TFILEATREVISION"
3f80: 3a 0d 0a 20 20 20 20 20 20 20 20 72 65 73 75 6c  :..        resul
3f90: 74 20 3d 20 67 69 74 2e 67 65 74 46 69 6c 65 41  t = git.getFileA
3fa0: 74 52 65 76 69 73 69 6f 6e 28 70 61 72 61 6d 31  tRevision(param1
3fb0: 2c 20 70 61 72 61 6d 32 29 3b 0d 0a 20 20 20 20  , param2);..    
3fc0: 20 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20      break;..    
3fd0: 63 61 73 65 20 22 53 48 4f 57 44 49 46 46 22 3a  case "SHOWDIFF":
3fe0: 0d 0a 20 20 20 20 20 20 20 20 72 65 73 75 6c 74  ..        result
3ff0: 20 3d 20 67 69 74 2e 67 65 74 46 69 6c 65 50 61   = git.getFilePa
4000: 74 68 54 6f 44 69 66 66 28 70 61 72 61 6d 31 2c  thToDiff(param1,
4010: 20 70 61 72 61 6d 32 29 3b 0d 0a 20 20 20 20 20   param2);..     
4020: 20 20 20 62 72 65 61 6b 3b 0d 0a 20 20 20 20 63     break;..    c
4030: 61 73 65 20 22 47 45 54 4c 4f 47 22 3a 0d 0a 20  ase "GETLOG":.. 
4040: 20 20 20 20 20 20 20 72 65 73 75 6c 74 20 3d 20         result = 
4050: 67 69 74 2e 67 65 74 4c 6f 67 28 70 61 72 61 6d  git.getLog(param
4060: 31 2c 20 70 61 72 61 6d 32 29 3b 0d 0a 20 20 20  1, param2);..   
4070: 20 20 20 20 20 62 72 65 61 6b 0d 0a 20 20 20 20       break..    
4080: 63 61 73 65 20 22 47 45 54 49 4e 46 4f 22 3a 0d  case "GETINFO":.
4090: 0a 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20  .        result 
40a0: 3d 20 67 69 74 2e 67 65 74 49 6e 66 6f 28 70 61  = git.getInfo(pa
40b0: 72 61 6d 31 2c 20 70 61 72 61 6d 32 29 3b 0d 0a  ram1, param2);..
40c0: 20 20 20 20 20 20 20 20 62 72 65 61 6b 0d 0a 20          break.. 
40d0: 20 20 20 63 61 73 65 20 22 43 4f 4d 4d 49 54 22     case "COMMIT"
40e0: 3a 0d 0a 20 20 20 20 20 20 20 20 72 65 73 75 6c  :..        resul
40f0: 74 20 3d 20 67 69 74 2e 63 6f 6d 6d 69 74 28 70  t = git.commit(p
4100: 61 72 61 6d 31 2c 20 70 61 72 61 6d 32 29 3b 0d  aram1, param2);.
4110: 0a 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0d  .        break;.
4120: 0a 20 20 20 20 0d 0a 20 20 20 20 7d 0d 0a 20 20  .    ..    }..  
4130: 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 0d    return result.
4140: 0a 7d 20 2f 2f 42 61 63 6b 65 6e 64 5f 62 7a 72  .} //Backend_bzr
4150: 0d 0a 0d 0a 66 75 6e 63 74 69 6f 6e 20 47 65 74  ....function Get
4160: 42 61 63 6b 65 6e 64 28 29 20 7b 0d 0a 20 20 20  Backend() {..   
4170: 20 72 65 74 75 72 6e 20 62 61 63 6b 65 6e 64 5f   return backend_
4180: 67 69 74 0d 0a 7d 20 2f 2f 47 65 74 42 61 63 6b  git..} //GetBack
4190: 65 6e 64 0d 0a 0d 0a 66 75 6e 63 74 69 6f 6e 20  end....function 
41a0: 47 65 74 42 61 63 6b 65 6e 64 47 69 74 28 29 20  GetBackendGit() 
41b0: 7b 0d 0a 20 20 20 20 69 66 20 28 21 42 61 63 6b  {..    if (!Back
41c0: 65 6e 64 47 69 74 2e 5f 69 6e 73 74 61 6e 63 65  endGit._instance
41d0: 29 0d 0a 20 20 20 20 20 20 20 20 6e 65 77 20 42  )..        new B
41e0: 61 63 6b 65 6e 64 47 69 74 28 29 3b 0d 0a 20 20  ackendGit();..  
41f0: 20 20 0d 0a 20 20 20 20 72 65 74 75 72 6e 20 42    ..    return B
4200: 61 63 6b 65 6e 64 47 69 74 2e 5f 69 6e 73 74 61  ackendGit._insta
4210: 6e 63 65 3b 0d 0a 7d 0d 0a 0d 0a                 nce;..}....