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)
     
     // Восстановим текущую строку