Index: dvcs/dvcs_bzr.js ================================================================== --- dvcs/dvcs_bzr.js +++ dvcs/dvcs_bzr.js @@ -193,23 +193,28 @@ } //bzr_getFileAtRevision function bzr_commit(pathToFile, message) { var rootCatalog = bzr_getRootCatalog(pathToFile); + var tempfile = GetTempFileName("txt"); var f = v8New("File", pathToFile); if (f.IsDirectory()) { pathToFile = '' } else { pathToFile = '"'+pathToFile+'"' } var TextDoc = v8New("TextDocument"); TextDoc.AddLine('cd /d "'+rootCatalog+'"') - TextDoc.AddLine('bzr commit ' +pathToFile+' -m "'+message+'"'); + TextDoc.AddLine('bzr commit ' +pathToFile+' --file="'+tempfile+'"'); + TextDoc.AddLine('exit'); + TextDoc.Write(PathToBat, 'cp866'); TextDoc.Clear(); - ErrCode = WshShell.Run('"'+PathToBat+'"', 0, 1) + TextDoc.SetText(message); + TextDoc.Write(tempfile, 'utf-8'); + ErrCode = WshShell.Run('"'+PathToBat+'"', 1, 1) return ErrCode } //bzr_commit function bzr_getFilePathToDiff(param1, param2) { // ... @@ -338,50 +343,26 @@ return result } function bzr_getListBranch(pathToFile, index) { - result = {"valuelist":v8New("ValueList"), "index":-1} - -/* var rootCatalog = fossil_getRootCatalog(pathToFile); - var PathToFossilOutput = TempDir + "fossilstatus.txt" // 1 utf-8, fossil . - var PathToBatFossil = TempDir + "fossilTrue.bat" + // bzr , bzr qcoloswitch . + var result = false; + var rootCatalog = bzr_getRootCatalog(pathToFile); var TextDoc = v8New("TextDocument"); - TextDoc.AddLine('cd /d "'+rootCatalog+'"') - //var = pathToFile.replace(rootCatalog+'\\', ''); - TextDoc.AddLine(PathToFossil+' branch > "'+PathToFossilOutput+'"') - TextDoc.Write(PathToBatFossil, 'cp866'); - ErrCode = WshShell.Run('"'+PathToBatFossil+'"', 0, 1) - TextDoc.Clear(); - TextDoc.Read(PathToFossilOutput, "UTF-8"); - var re = new RegExp(/(\s*|\*\s)(\S*)\n/g); - var r = TextDoc.(); - var matches; - var index=0; - //debugger; - while ((matches = re.exec(r)) != null) - { - result['valuelist'].add(matches[2], matches[2]) - if (matches[1].indexOf("\*")!=-1) result["index"]=index; - index++; - } */ + TextDoc.AddLine('cd /d "'+rootCatalog+'"'); + TextDoc.AddLine('bzr qcoloswitch'); + TextDoc.AddLine('exit'); + TextDoc.Write(PathToBat, 'cp866'); + ErrCode = WshShell.Run('"'+PathToBat+'"', 0, 1) + return result; } function bzr_swithBranch (pathToFile, branch) { - - /* var rootCatalog = fossil_getRootCatalog(pathToFile); - var PathToFossilOutput = TempDir + "fossilstatus.txt" // 1 utf-8, fossil . - var PathToBatFossil = TempDir + "fossilTrue.bat" - var TextDoc = v8New("TextDocument"); - TextDoc.AddLine('cd /d "'+rootCatalog+'"') - //var = pathToFile.replace(rootCatalog+'\\', ''); - TextDoc.AddLine(PathToFossil+' update '+ branch +' > "'+PathToFossilOutput+'"'); - TextDoc.Write(PathToBatFossil, 'cp866'); - ErrCode = WshShell.Run('"'+PathToBatFossil+'"', 0, 1) - TextDoc.Clear(); */ + return true; } @@ -436,18 +417,18 @@ break case "GETINFO": result = bzr_getInfo(param1, param2); break case "GETLISTBRANCH": - result = bzr_getListBranch(param1); // result {"valuelist":v8New("ValueList"), "index": } + result = bzr_getListBranch(param1); // result {"valuelist":v8New("ValueList"), "index": } false... break case "SWITHBRANCH": - result = bzr_swithBranch(param1, param2); // ... true & false + result = bzr_swithBranch(param1, param2); // ... true || false break; } return result } //Backend_bzr function GetBackend() { return Backend_bzr } //GetBackend Index: dvcs/dvcs_fossil.js ================================================================== --- dvcs/dvcs_fossil.js +++ dvcs/dvcs_fossil.js @@ -337,11 +337,11 @@ var ver1sha1 = '' //sha1 первого файла в базе fossil // Запусим shell и найдем версии файлов. TextDoc.Clear(); TextDoc.AddLine('cd /d "' +rootCatalog +'"') - TextDoc.AddLine(PathToFossil+' finfo -b --limit 1 "'+pathToFile+'" >> "' +PathToFossilOutput+'"'); + TextDoc.AddLine(PathToFossil+' finfo -b --limit 1 "'+pathToFile+'" > "' +PathToFossilOutput+'"'); TextDoc.Write(PathToBatFossil, 'cp866'); ErrCode = WshShell.Run('"'+PathToBatFossil+'"', 0, 1) TextDoc.Read(PathToFossilOutput, "UTF-8"); if (TextDoc.LineCount() == 0) { @@ -416,11 +416,11 @@ TextDoc.Записать(PathToFossilOutput, "UTF-8"); var лКаталог =""; //if (лКаталог == '') { //определим текущий ROOT каталог для fossil var млКаталог = pathToCatalog; TextDoc.AddLine('cd /d"' +млКаталог +'"') - TextDoc.AddLine(PathToFossil +' status >> "'+PathToFossilOutput+'"'); + TextDoc.AddLine(PathToFossil +' status > "'+PathToFossilOutput+'"'); TextDoc.Write(PathToBatFossil, 'cp866'); ErrCode = WshShell.Run('"'+PathToBatFossil+'"', 0, 1) TextDoc.Read(PathToFossilOutput, "UTF-8"); if (TextDoc.LineCount() == 0) { Message ("комманда отработала, но вывод не записался, надо отладить!") @@ -671,16 +671,21 @@ { result['valuelist'].add(matches[2], matches[2]) if (matches[1].indexOf("\*")!=-1) result["index"]=index; index++; } + //Добавим сюда комманды создания новой ветки... + result['valuelist'].add("NEWBRANCH", "Новая ветка"); + result['valuelist'].add("NEWBRANCHPRIVATE", "Новая приватная ветка"); + return result; } function fossil_swithBranch (pathToFile, branch) { - + + if ((branch == "NEWBRANCH") || (branch == "NEWBRANCHPRIVATE")) return fossil_createBranch(pathToFile, branch); var rootCatalog = fossil_getRootCatalog(pathToFile); var PathToFossilOutput = TempDir + "fossilstatus.txt" // Пишем 1С файл в utf-8, выводим туда статус fossil после этого читаем его. var PathToBatFossil = TempDir + "fossilTrue.bat" var TextDoc = v8New("TextDocument"); TextDoc.AddLine('cd /d "'+rootCatalog+'"') @@ -690,11 +695,73 @@ ErrCode = WshShell.Run('"'+PathToBatFossil+'"', 0, 1) TextDoc.Clear(); return true; } -function fossil_createBranch(pathToFile, branch) { +function fossil_createBranch(pathToFile, branch, type) { + + var name = ""; + var checkin = ""; + if (type == undefined) type = ''; + if (branch == "NEWBRANCHPRIVATE") { + + type = "--private"; + } + + if ((branch == "NEWBRANCH") || (branch == "NEWBRANCHPRIVATE")){ + var vbs = addins.byUniqueName("vbs").object + vbs.var0 = ""; vbs.var1 = "Введите имя ветки"; vbs.var2 = 0, vbs.var3 = false; + if (vbs.DoEval("InputString(var0, var1, var2, var3)")) { + var message = vbs.var0; + name = message; + } + } else { + name = branch; + } + + if (name.length==0) { + Message('Имя ветки для создания пустое.'); + return false; + } + + var rootCatalog = fossil_getRootCatalog(pathToFile); + var PathToFossilOutput = TempDir + "fossilstatus.txt" // Пишем 1С файл в utf-8, выводим туда статус fossil после этого читаем его. + var PathToBatFossil = TempDir + "fossilTrue.bat" + var TextDoc = v8New("TextDocument"); + TextDoc.AddLine('cd /d "'+rootCatalog+'"'); + TextDoc.AddLine(PathToFossil +' status > "'+PathToFossilOutput+'"'); + TextDoc.Write(PathToBatFossil, 'cp866'); + ErrCode = WshShell.Run('"'+PathToBatFossil+'"', 0, 1) + TextDoc.Clear(); + TextDoc.Read(PathToFossilOutput, "UTF-8"); + var re = new RegExp(/^checkout:\s*(\w*)\s*/m); + var r = TextDoc.ПолучитьТекст(); + var matches = r.match(re); + + if (matches && matches.length) { + checkin = matches[1]; + } + + TextDoc.AddLine('cd /d "'+rootCatalog+'"'); + //TextDoc.AddLine(PathToFossil +' branch new '+name+' '+checkin+' '+type+' > "'+PathToFossilOutput+'"'); + TextDoc.AddLine(PathToFossil +' branch new '+name+' '+checkin+' '+type); + TextDoc.AddLine('exit'); + TextDoc.Write(PathToBatFossil, 'cp866'); + ErrCode = WshShell.Run('"'+PathToBatFossil+'"', 1, 1); + TextDoc.Clear(); + fossil_swithBranch(pathToFile, name); + /* TextDoc.Read(PathToFossilOutput, "UTF-8"); + var r = TextDoc.ПолучитьТекст(); + var re = new RegExp(/^New\sbranch:\s*(\w*)/m); + var matches = r.match(re); + if (matches && matches.length) { + branch = matches[1]; + fossil_swithBranch(pathToFile, branch); + } else { + Message(r); + } */ + return true; } function Backend_fossil(command, param1, param2) { var result = false; @@ -750,13 +817,10 @@ result = fossil_getListBranch(param1); //возвращаем result {"valuelist":v8New("ValueList"), "index": индекс ветки текущей} break case "SWITHBRANCH": result = fossil_swithBranch(param1, param2); break; - case "CREATEBRANCH": - result = fossil_createBranch(param1, param2); - break; } return result } //Backend_fossil function GetBackend() { Index: extfiles.js ================================================================== --- extfiles.js +++ extfiles.js @@ -732,12 +732,15 @@ // Запомним текущую строку лИмяФайлаТекСтроки=лТекСтрока.ИмяФайла while(лТекСтрока.Родитель != undefined) лТекСтрока=лТекСтрока.Родитель лТекСтрока.Строки.Очистить() - dvcsGetCatalogStatus(лТекСтрока.Имя); - dvcsGetMissingFiles(лТекСтрока.Имя, лТекСтрока) + if (мИспользоватьВерсионирование){ + dvcsGetCatalogStatus(лТекСтрока.Имя); + dvcsGetMissingFiles(лТекСтрока.Имя, лТекСтрока); + лТекСтрока.Статус = dvcsGetFileStatus(лТекСтрока.ИмяФайла); + } мДобавитьФайлы(лТекСтрока.Имя, лТекСтрока) лТекСтрока.Строки.Сортировать("ЭтоКаталог Убыв, Имя", true) // Восстановим текущую строку