Difference between revisions of "VMS IDE How does it work"
(→Upload using ZIP) |
(→Synchronization) |
||
Line 2: | Line 2: | ||
=== Synchronization === | === Synchronization === | ||
− | 1. Из VMS загружается список файлов, начиная с '''root''' папки, соответствующих маскам '''source''', '''headers''', '''builders''', '''resource''', и не попадающих в исключение '''exclude'''. | + | 1. Из VMS загружается список файлов, начиная с '''root''' папки, соответствующих маскам '''source''', '''headers''', '''builders''', '''resource''', и не попадающих в исключение '''exclude'''.<br> |
− | 2. Такой-же список подоготавливается на стороне PC. | + | |
− | 3. Сравниваются времена изменения соответсвующих файлов и создаются два списка: '''A''' - файлы, которые новее на PC, и '''B''' - файлы, которые новее на VMS. Учитывается разница во времени не менее секунды. | + | 2. Такой-же список подоготавливается на стороне PC.<br> |
− | 4. Проверяется значение '''downloadNewFiles''': | + | |
− | 4.1. Если '''downloadNewFiles''' равен '''skip''', то список '''B''' игнорируется. | + | 3. Сравниваются времена изменения соответсвующих файлов и создаются два списка: '''A''' - файлы, которые новее на PC, и '''B''' - файлы, которые новее на VMS. Учитывается разница во времени не менее секунды.<br> |
− | 4.2. Если '''downloadNewFiles''' равен '''edit''', то файлы из списка '''B''' загружаются в память PC и отрываются окна для сравнения с версией на PC, редактирования и сохранения изменений. | + | |
− | 4.3. Если '''downloadNewFiles''' равен '''overwrite''', то файлы из списка '''B''' загружаются на PC поверх старых. | + | 4. Проверяется значение '''downloadNewFiles''':<br> |
− | 5. Файлы из списка '''A''' выгружаются на VMS и для них выставляется время, которое было у файлов на PC: | + | |
− | 5.1. Если в настройках SSH установлено '''supportSetFileTime''', то установка времени файла будет осуществляться посредством команд SSH | + | 4.1. Если '''downloadNewFiles''' равен '''skip''', то список '''B''' игнорируется.<br> |
− | 5.2. В противном случае запускается SSH Shell и время файлам устанавливается командами DCL '''set file FILE.EXT /attribute(mod=DATE,att=DATE)''' | + | |
− | 6. После этого выставляется флаг синхронизированности проекта. | + | 4.2. Если '''downloadNewFiles''' равен '''edit''', то файлы из списка '''B''' загружаются в память PC и отрываются окна для сравнения с версией на PC, редактирования и сохранения изменений.<br> |
+ | |||
+ | 4.3. Если '''downloadNewFiles''' равен '''overwrite''', то файлы из списка '''B''' загружаются на PC поверх старых.<br> | ||
+ | |||
+ | 5. Файлы из списка '''A''' выгружаются на VMS и для них выставляется время, которое было у файлов на PC:<br> | ||
+ | |||
+ | 5.1. Если в настройках SSH установлено '''supportSetFileTime''', то установка времени файла будет осуществляться посредством команд SSH<br> | ||
+ | |||
+ | 5.2. В противном случае запускается SSH Shell и время файлам устанавливается командами DCL '''set file FILE.EXT /attribute(mod=DATE,att=DATE)'''<br> | ||
+ | |||
+ | 6. После этого выставляется флаг синхронизированности проекта.<br> | ||
=== Upload using ZIP === | === Upload using ZIP === |
Revision as of 10:50, 19 February 2020
Contents
How does it work
Synchronization
1. Из VMS загружается список файлов, начиная с root папки, соответствующих маскам source, headers, builders, resource, и не попадающих в исключение exclude.
2. Такой-же список подоготавливается на стороне PC.
3. Сравниваются времена изменения соответсвующих файлов и создаются два списка: A - файлы, которые новее на PC, и B - файлы, которые новее на VMS. Учитывается разница во времени не менее секунды.
4. Проверяется значение downloadNewFiles:
4.1. Если downloadNewFiles равен skip, то список B игнорируется.
4.2. Если downloadNewFiles равен edit, то файлы из списка B загружаются в память PC и отрываются окна для сравнения с версией на PC, редактирования и сохранения изменений.
4.3. Если downloadNewFiles равен overwrite, то файлы из списка B загружаются на PC поверх старых.
5. Файлы из списка A выгружаются на VMS и для них выставляется время, которое было у файлов на PC:
5.1. Если в настройках SSH установлено supportSetFileTime, то установка времени файла будет осуществляться посредством команд SSH
5.2. В противном случае запускается SSH Shell и время файлам устанавливается командами DCL set file FILE.EXT /attribute(mod=DATE,att=DATE)
6. После этого выставляется флаг синхронизированности проекта.
Upload using ZIP
Все файлы на стороне PC, соответствующие маскам source, headers, builders, resource, и не попадающих в исключение exclude, архивируются и архив выгружается на VMS.
1. Если задано unzipCmd, то для разархивации будет послана команда unzipCmd + имя архива. Команда для разархивации должна учитывать следующие факторы: времена файлов должны выставляться по текущему времени на компьютере, и разархиватор не должен ничего запрашивать от пользователя, т.е. всегда разархиваировать поверх или наоборот.
2. Если unzipCmd пуст, то для разархивации будет послана команда unzip -oo "-D" + имя архива
Если всё прошло успешно выставляется флаг синхронизированности проекта.
Uploading
1. Если preferZip установлен в true, то будет выполнено Upload using ZIP.
2. Если preferZip не установлен, то Uploading выполняется как Synchronization, только список B всегда игнорируется.
Quick uploading
Работает для проекта, на котором стоит курсор в закладке PROJECT DEPENDENCIES.
На удалённую машину будут загружены файлы, соответствующие маскам source, headers, builders, resource, и не соответствующие исключению exclude, которые были изменены с момента последней синхронизации, аплоада или с начала работы программы. Если файл был удалён на PC, он также будет удалён и на VMS.
Если проект до начала изменений файлов был синхронизирован, то после Quick uploading он будет считаться синхронизированным. Иначе флаг синхронизации не изменится.
File masks
Example | Meaning |
---|---|
**/folder/** | All files which have this folder in path |
*.ext | All files with extension ext |
*. | All files without extension |
**/build/**/*.com | All files with com extension which have build in path |