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;..}....