Есть ли способ использовать git с базой данных Pick D3, так как исходный код и скомпилированные программы хранятся внутри D3?
Я думаю, что единственным вариантом было бы создание подпрограмм для импорта/экспорта исходного кода в файлы в D3, но это похоже на большую работу, а также легко обойтись со встроенными редакторами в D3.с использованием git с базой данных Pick D3
ответ
Пожалуйста, сообщите, если этот ответ слишком редок, и, конечно же, примите, если это ответит на вопрос для вас. Я использую GitHub, но у меня нет частного репозитория Git, и я никогда не использую командную строку. Тем не менее, я использую следующую технику с Subversion, и поскольку ни один из них не является VCS-специфичным, он будет работать с Git, Hg и любым другим.
Решение заключается в использовании DFI OSFI.
- Настройка хост файловой системы для мерзавца, указывая папку в репозиторий и т.д.
- Скопируйте исходный код программы для одного файла (я буду называть его BP) в другой файл D3.
- Удалите только файл данных вашего файла BP, оставьте dict.
- Теперь создайте QS-указатель в Dict BP, называемый BP, в папку хоста.
- Теперь вы должны иметь СПИСОК BP и не получать предметы
- Скопируйте весь источник обратно в BP. Если вы посмотрите на ОС хоста, вы увидите все элементы в папке.
- Сделайте свою первую фиксацию из командной строки ОС, убедитесь, что она работает.
- Теперь создайте программу BASIC, которая обертывает командную строку ОС. Запросить необходимые поля и получить их до точки, где вам нужно только
EXECUTE "!cmd -options ..." CAPTURING OUT
, чтобы выполнить фиксацию. Заказывайте каталог как COMMIT или GIT.COMMIT.
Итак, теперь вы редактируете/компилируете/запускаете свои программы как обычно изнутри D3. Когда будете готовы, просто выполните COMMIT, укажите комментарии или другие данные, и ваша программа будет обрабатывать детали на уровне ОС. Ответ должен отображаться и/или регистрироваться.
На этом этапе вы можете отредактировать свой код BASIC за пределами D3, а затем отправить команду COMPILE в D3 (поскольку объект должен быть сгенерирован в VME и сохранен в Dict).
Возможно, вы также захотите добавить в свою «библиотеку» команды оболочки git в BASIC для откатов и других функций.
Вам нужен указатель QS, чтобы программы BASIC также сохранялись в файлах D3-сохранения и сохранения учетной записи. Это может вызвать проблемы, если вам нужно восстановить, вы должны поэкспериментировать с этим. Если вы сохраните учетную запись, а затем восстановите ее в другом месте, у вас могут быть головные боли, поскольку данные из сохранения будут накладываться на все, что есть в ОС хоста.
При настройке указателя QS не используйте DOS: или UNIX: расширения хоста, используйте только путь C:/Dev/Git/RepoD3 или для * nix/home/dev/git/repoD3. Если вы используете неправильное расширение хоста, у вас будут неправильные разделители EOL в ваших данных. Вы также можете не захотеть, чтобы вкладки были преобразованы в пробелы и наоборот. Поэкспериментируйте с этим, и вы можете решить создать собственное расширение хоста, которое делает именно то, что вы хотите. (Вне сферы действия этого ответа.)
На шаге 8 вы можете выполнить фиксацию из TCL с помощью командной строки. Вам не нужна обертка BASIC. Однако могут возникнуть проблемы с выходом сервера, пытающимся вернуться назад через этот канал, поэтому я настоятельно рекомендую выполнять функции ОС от BASIC.Вы можете использовать что-то подобное, чтобы ответить на несколько запросов:
CMD = "!do this "
CMD := OPTIONS
CMD<-1> = Response.To.First.Prompt
CMD<-1> = Second.Response
EXECUTE CMD CAPTURING OUT
Таким образом, ничто не повесится.
Спасибо, это тоже тот же подход, с которым я столкнулся. Единственная проблема, с которой я столкнулся до сих пор, заключается в том, что теперь идентификаторы элементов чувствительны к регистру. То есть, я ранее мог: ed file myitem из TCL ut теперь, если MYITEM является капиталом, тогда он хранится в файловой системе Linux в столицах, поэтому моя команда TCL не будет работать, если я использую строчный регистр. Не огромная проблема, просто нужно обратить внимание на чувствительность к регистру. Я мог бы также попробовать использовать ciopfs, чтобы обойти это. http://www.brain-dump.org/projects/ciopfs/ – Adam
Вы можете использовать команду редактора (ED? Ugh.), Чтобы принудительно использовать предпочтительный случай. Или создайте индекс, чтобы сохранить предпочтительный случай где-нибудь, в то время как идентификатор элемента ОС всегда является UC или LC. Тогда ваша команда редактора всегда найдет элемент независимо от того, что вы вводите в TCL. Я уверен, что вы можете разработать эти детали - это та цена, которая выплачивается при работе на любой платформе. Рад помочь. – TonyG
Я думаю, что лучшим решением для проблемы чувствительности к регистру является следующее: я создал новый элемент «unixs» в dm, hosts, который имеет rs в атрибуте 3. Затем в элементе QS для словаря данных файла я использовал unixs:/Путь к папке – Adam
Мы автоматизировали импорт/экспорт источника, и вы правы, много работы и болезненны для отката и т. Д. Я думаю, что пришло время для этого стать проектом с открытым исходным кодом, потому что мы ненавидим систему SCC на основе Pick у нас есть. – belwood