DirSync — синхронизация каталогов

Здесь можно обсудить ваш любимый плагин.
Maximus5
Posts: 3291
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 4 times
Contact:

DirSync — синхронизация каталогов

Postby Maximus5 » Mon 27 Jun, 2011 08:13

Обсуждение плагина DirSync

Yegor
Posts: 842
Joined: Mon 04 Apr, 2005 13:41
Location: Kharkov, Ukraine
Has thanked: 2 times
Been thanked: 7 times

Re: DirSync - синхронизация каталогов

Postby Yegor » Mon 27 Jun, 2011 08:32

0.3.6 - бинарники самому собирать? :)
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин

Maximus5
Posts: 3291
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 4 times
Contact:

Re: DirSync - синхронизация каталогов

Postby Maximus5 » Mon 27 Jun, 2011 08:34

Никто запретить тебе этого не может :-P
Но можно и скачать

Yegor
Posts: 842
Joined: Mon 04 Apr, 2005 13:41
Location: Kharkov, Ukraine
Has thanked: 2 times
Been thanked: 7 times

Re: DirSync - синхронизация каталогов

Postby Yegor » Mon 27 Jun, 2011 09:38

Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин

User avatar
Wave
Posts: 1705
Joined: Thu 04 Aug, 2005 18:47
Location: Харьков, Украина
Has thanked: 2 times
Been thanked: 9 times
Contact:

Re: DirSync — синхронизация каталогов

Postby Wave » Fri 01 Jul, 2011 18:02

Синхронизирую пару svn-репозиториев, репозиторий и экспорт… Как-то так, в общем. Это оказалось на удивление удобно делать, предварительно спрятав по CtrlH все папочки «.svn».
Всё очень классно… За одним исключением. Если плагин хочет перенести какую-то папку целиком, типа
<<== tags\palomnik\*
<--- trunk\index.php
<--- trunk\tpl\default\style.css
, то он и переносит её целиком, со всеми «.svn». А хотелось бы, раз уж они не участвуют в сравнении, и не переносить их.
Пользуюсь ФАРом больше 15 лет © собирательный.

User avatar
Wave
Posts: 1705
Joined: Thu 04 Aug, 2005 18:47
Location: Харьков, Украина
Has thanked: 2 times
Been thanked: 9 times
Contact:

Re: DirSync — синхронизация каталогов

Postby Wave » Sun 03 Jul, 2011 23:40

Спасибо за новую версию! То, что надо!
Пользуюсь ФАРом больше 15 лет © собирательный.

r-bin
Posts: 65
Joined: Fri 16 Jul, 2010 02:53
Has thanked: 1 time

Re: DirSync — синхронизация каталогов

Postby r-bin » Mon 04 Jul, 2011 02:48

v0.3.7
Не сохраняется сброшенное состояние "Use filter".

r-bin
Posts: 65
Joined: Fri 16 Jul, 2010 02:53
Has thanked: 1 time

Re: DirSync — синхронизация каталогов

Postby r-bin » Mon 04 Jul, 2011 03:01

v0.3.7, фар 2.0.1807 x86 XPx32.
Слева произвольный каталог, справа архив через арклайт. Нажимаем F11-Y, вызываем плагин. Жмем Esc - типа ничего не делаем. Опять жмём F11-Y.
Получаем ошибку и вылет фара стабильно:

Maximus5
Posts: 3291
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 4 times
Contact:

Re: DirSync — синхронизация каталогов

Postby Maximus5 » Mon 04 Jul, 2011 07:16

r-bin wrote:v0.3.7
Не сохраняется сброшенное состояние "Use filter".

И не должно. Зачем?

r-bin
Posts: 65
Joined: Fri 16 Jul, 2010 02:53
Has thanked: 1 time

Re: DirSync — синхронизация каталогов

Postby r-bin » Mon 04 Jul, 2011 12:13

Maximus5 wrote:И не должно. Зачем?

Ну как бы это настройка вроде. Чтоб не пользоваться фильтрами (я не пользуюсь) - вот зачем. И, соответственно, для гарантированной полной синхронизации её лучше снимать. Зачем тогда вообще эта галка? Может я, и кто-нибудь ещё, хотят её держать отключенной раз она есть. Может сделать так, что если нет фильтров изначально (даже не знаю как ими пользоваться), то галочку не включать или вообще дисэйблить с кнопками фильтров?

Maximus5
Posts: 3291
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 4 times
Contact:

Re: DirSync — синхронизация каталогов

Postby Maximus5 » Mon 04 Jul, 2011 14:45

Я не знаю способа проверить включены ли фильтры на панели (такого нет похоже)
Включение флажка означает, что обработано будет ровно то, что видимо на панели. И это правильно)
Если вы фильтрами вообще не пользуетесь, то и беспокоиться не о чем)

Кстати, раньшы все было точно так же, просто включенного флажка не было. Никто не жаловался

User avatar
Wave
Posts: 1705
Joined: Thu 04 Aug, 2005 18:47
Location: Харьков, Украина
Has thanked: 2 times
Been thanked: 9 times
Contact:

Re: DirSync — синхронизация каталогов

Postby Wave » Fri 08 Jul, 2011 14:17

Макрос Copy left to right не убирает имеющуюся стрелку, в результате получается <------>, а если вручную сначала убрать, получится «current line is not difference info». Ну, макрос достаточно просто поправить…
P.s. И неплохо бы доработать до варианта «сразу несколько строк копировать в нужную сторону». Правда, слабо себе это представляю. Разве что не снимать выделение в процессе…

Что означает --->, а что ==>>? И почему в макросе нет ==>>?
Хотя, кажется, понял — это то, чего на другой панели нет?

Как удалить «лишние» файлы с одной из панелей? А то я что-то не понял.
Пользуюсь ФАРом больше 15 лет © собирательный.

Maximus5
Posts: 3291
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 4 times
Contact:

Re: DirSync — синхронизация каталогов

Postby Maximus5 » Fri 08 Jul, 2011 14:38

Ну и где исправленный макрос? У меня он работает без ошибок.

===> означает что файл есть только слева. соответственно в макросе это нафиг не нужно. при синхронизации плагину важно только направление. остальное - инфа для пользователя

удалить - флажками в диалоге по закрытию редактора

User avatar
Wave
Posts: 1705
Joined: Thu 04 Aug, 2005 18:47
Location: Харьков, Украина
Has thanked: 2 times
Been thanked: 9 times
Contact:

Re: DirSync — синхронизация каталогов

Postby Wave » Fri 08 Jul, 2011 15:08

А что там исправлять.
CtrlU Home $Rep(4) ShiftRight $end print("<---") Right
заменить на
CtrlU Home $Rep(4) ShiftRight $end CtrlD print("<---") Right
или, скажем,
Home $Rep(4) Right $end $Rep(4) BS $end print("<---") Right

А о многострочной замене я пока только в общих чертах думал. Не использовать ShiftRight и CtrlU, добавить цикл, в конце которого сдвиг курсора Down и проверка, всё ещё выделенная область или как… Есть такая функция в писании? Ну и после цикла сделать CtrlU.
Или задействовать CtrlF7\RESearch.
Пользуюсь ФАРом больше 15 лет © собирательный.

pepak
Posts: 312
Joined: Sun 13 Jul, 2008 11:18
Has thanked: 1 time
Been thanked: 9 times

DirSync — Synchronize Directories

Postby pepak » Wed 10 Aug, 2011 16:51

It's my first attempt at FAR's macro language, so please bear with me and point out any errors I made. The code is heavily based on the original Maximus5's code, except that I opted to remove dependency on menu, and use a number of keys instead:
- ALT+F1 = copy to left
- ALT+F2 = copy to right
- ALT+F3 = compare using WinMerge (or any other external utility)
- CTRL+F1 = edit left
- CTRL+F2 = edit right
The code for ALT+F3 seems especially cumbersome to me, surely there is a better way to do it?

Code: Select all

// Far2
const DirSyncID = 0x44725363
// Far3
//const DirSyncID = "F5AE7C40-F8D0-443E-82A4-285DBFB4FF69"

macro Descr="DirSync - edit left" Area="Editor" Key="CtrlF1"
{{
  $if (callplugin(#%DirSyncID,1)==0) $Exit $end
  $if (env("DirSyncFileInfo")=="")
    MsgBox("DirSync info","Current editor is not DirSync report\nor current line is not difference info",1)
    $Exit
  $end

  $if (!fexist(env("DirSyncFileLeft")))
    MsgBox("DirSync info","File on the left does not exist",1)
    $Exit
  $end
  ShiftF4 print(env("DirSyncFileLeft")) Enter
}}

macro Descr="DirSync - edit right" Area="Editor" Key="CtrlF2"
{{
  $if (callplugin(#%DirSyncID,1)==0) $Exit $end
  $if (env("DirSyncFileInfo")=="")
    MsgBox("DirSync info","Current editor is not DirSync report\nor current line is not difference info",1)
    $Exit
  $end

  $if (!fexist(env("DirSyncFileRight")))
    MsgBox("DirSync info","File on the right does not exist",1)
    $Exit
  $end
  ShiftF4 print(env("DirSyncFileRight")) Enter
}}

macro Descr="DirSync - copy to left" Area="Editor" Key="AltF1"
{{
  $if (callplugin(#%DirSyncID,1)==0) $Exit $end
  $if (env("DirSyncFileInfo")=="")
    MsgBox("DirSync info","Current editor is not DirSync report\nor current line is not difference info",1)
    $Exit
  $end

  $if (!fexist(env("DirSyncFileRight")))
    MsgBox("DirSync info","File on the right does not exist",1)
    $Exit
  $end
  Home Del Del Del Del print("<---") Right
}}

macro Descr="DirSync - copy to right" Area="Editor" Key="AltF2"
{{
  $if (callplugin(#%DirSyncID,1)==0) $Exit $end
  $if (env("DirSyncFileInfo")=="")
    MsgBox("DirSync info","Current editor is not DirSync report\nor current line is not difference info",1)
    $Exit
  $end

  $if (!fexist(env("DirSyncFileLeft")))
    MsgBox("DirSync info","File on the left does not exist",1)
    $Exit
  $end
  Home Del Del Del Del print("--->") Right
}}

macro Descr="DirSync - compare" Area="Editor" Key="AltF3"
{{
  $if (callplugin(#%DirSyncID,1)==0) $Exit $end
  $if (env("DirSyncFileInfo")=="")
    MsgBox("DirSync info","Current editor is not DirSync report\nor current line is not difference info",1)
    $Exit
  $end

  $if (!fexist(env("DirSyncFileLeft")))
    MsgBox("DirSync info","File on the left does not exist",1)
    $Exit
  $end
  $if (!fexist(env("DirSyncFileRight")))
    MsgBox("DirSync info","File on the right does not exist",1)
    $Exit
  $end

  // Switch to panels
  %PanelCount=0;
  $While (!Shell)
    %PanelCount=%PanelCount+1;
    CtrlTab
    $End

  // Save command line
  $If (!CmdLine.Empty)
    %Flg_Cmd=1;
    %CmdCurPos=CmdLine.ItemCount-CmdLine.CurPos+1;
    %CmdVal=CmdLine.Value;
    Esc
  $End

  // Run the compare
  print("winmerge \"")
  print(env("DirSyncFileLeft"))
  print("\" \"")
  print(env("DirSyncFileRight"))
  print("\"")
  Enter
  sleep(100)

  // Restore command line
  $If (%Flg_Cmd==1)
    $Text %CmdVal
    %Flg_Cmd=0;
    %Num=%CmdCurPos;
    $While (%Num!=0)
      %Num=%Num-1;
      CtrlS
    $End
  $End

  // Return back
  $While (%PanelCount > 0)
    %PanelCount=%PanelCount-1;
    CtrlShiftTab
    $End
  $Exit;

}}
Last edited by John Doe on Wed 10 Aug, 2011 17:00, edited 1 time in total.
Reason: moved from http://forum.farmanager.com/viewtopic.php?f=39&t=4479

pepak
Posts: 312
Joined: Sun 13 Jul, 2008 11:18
Has thanked: 1 time
Been thanked: 9 times

Re: DirSync — Synchronize Directories

Postby pepak » Wed 10 Aug, 2011 18:41

Edited to add quotes around the paths.


Return to “Обсуждение плагинов”

Who is online

Users browsing this forum: Yahoo [Bot] and 5 guests