2015-08-05 5 views
2

Есть ли способ использовать git с базой данных Pick D3, так как исходный код и скомпилированные программы хранятся внутри D3?
Я думаю, что единственным вариантом было бы создание подпрограмм для импорта/экспорта исходного кода в файлы в D3, но это похоже на большую работу, а также легко обойтись со встроенными редакторами в D3.с использованием git с базой данных Pick D3

+0

Мы автоматизировали импорт/экспорт источника, и вы правы, много работы и болезненны для отката и т. Д. Я думаю, что пришло время для этого стать проектом с открытым исходным кодом, потому что мы ненавидим систему SCC на основе Pick у нас есть. – belwood

ответ

0

Пожалуйста, сообщите, если этот ответ слишком редок, и, конечно же, примите, если это ответит на вопрос для вас. Я использую GitHub, но у меня нет частного репозитория Git, и я никогда не использую командную строку. Тем не менее, я использую следующую технику с Subversion, и поскольку ни один из них не является VCS-специфичным, он будет работать с Git, Hg и любым другим.

Решение заключается в использовании DFI OSFI.

  1. Настройка хост файловой системы для мерзавца, указывая папку в репозиторий и т.д.
  2. Скопируйте исходный код программы для одного файла (я буду называть его BP) в другой файл D3.
  3. Удалите только файл данных вашего файла BP, оставьте dict.
  4. Теперь создайте QS-указатель в Dict BP, называемый BP, в папку хоста.
  5. Теперь вы должны иметь СПИСОК BP и не получать предметы
  6. Скопируйте весь источник обратно в BP. Если вы посмотрите на ОС хоста, вы увидите все элементы в папке.
  7. Сделайте свою первую фиксацию из командной строки ОС, убедитесь, что она работает.
  8. Теперь создайте программу 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 

Таким образом, ничто не повесится.

+0

Спасибо, это тоже тот же подход, с которым я столкнулся. Единственная проблема, с которой я столкнулся до сих пор, заключается в том, что теперь идентификаторы элементов чувствительны к регистру. То есть, я ранее мог: ed file myitem из TCL ut теперь, если MYITEM является капиталом, тогда он хранится в файловой системе Linux в столицах, поэтому моя команда TCL не будет работать, если я использую строчный регистр. Не огромная проблема, просто нужно обратить внимание на чувствительность к регистру. Я мог бы также попробовать использовать ciopfs, чтобы обойти это. http://www.brain-dump.org/projects/ciopfs/ – Adam

+0

Вы можете использовать команду редактора (ED? Ugh.), Чтобы принудительно использовать предпочтительный случай. Или создайте индекс, чтобы сохранить предпочтительный случай где-нибудь, в то время как идентификатор элемента ОС всегда является UC или LC. Тогда ваша команда редактора всегда найдет элемент независимо от того, что вы вводите в TCL. Я уверен, что вы можете разработать эти детали - это та цена, которая выплачивается при работе на любой платформе. Рад помочь. – TonyG

+1

Я думаю, что лучшим решением для проблемы чувствительности к регистру является следующее: я создал новый элемент «unixs» в dm, hosts, который имеет rs в атрибуте 3. Затем в элементе QS для словаря данных файла я использовал unixs:/Путь к папке – Adam

 Смежные вопросы

  • Нет связанных вопросов^_^