Is there a way to use git with Pick D3 database since the source code and compiled programs are stored inside D3?
I think the only option would be to build routines to import/export the source code into the files in D3, but that seems like a lot of work, and also easily bypassable with the built-in editors in D3.
1 回答
如果这个答案太稀疏,请告知,如果这回答了你的问题,当然请接受。我使用 GitHub,但我在任何地方都没有私人 Git 存储库,而且我从不使用命令行。但是,我确实在 Subversion 中使用了以下技术,并且由于这些都不是 VCS 特定的,因此它可以与 Git、Hg 和其他任何东西一起使用。
解决方案是使用 D3 OSFI。
- 为 git 设置主机文件系统,将文件夹指向 repo 等。
- 将单个文件(我将其称为 BP)的程序源复制到另一个 D3 文件。
- 只删除 BP 文件的数据文件,保留 dict。
- 现在在 Dict BP 中创建一个 QS 指针,称为 BP,指向主机文件夹。
- 您现在应该能够列出 BP 并且没有获得任何物品
- 将所有源复制回 BP。如果您查看主机操作系统,您将看到文件夹中的所有项目。
- 从操作系统命令行进行第一次提交,确保它有效。
- 现在创建一个包装操作系统命令行的 BASIC 程序。提示输入必填字段并将其设置为您只需要进行
EXECUTE "!cmd -options ..." CAPTURING OUT
提交即可。将该程序编目为 COMMIT 或 GIT.COMMIT。
因此,现在您可以在 D3 中正常编辑/编译/运行您的程序。准备就绪后,只需执行 COMMIT,提供注释或其他详细信息,您的程序将处理操作系统级别的详细信息。应显示和/或记录响应返回。
此时您可能决定在 D3 之外编辑您的 BASIC 代码,然后将 COMPILE 命令发送到 D3(因为需要在 VME 中生成对象并存储在 Dict 中)。
您可能还想在 BASIC 中添加 git 包装器命令的“库”,以实现回滚和其他功能。
您需要一个 QS 指针,以便 BASIC 程序也可以保存在 D3 文件保存和帐户保存中。如果您需要恢复,这可能会导致问题,您应该对此进行试验。如果您保存帐户然后将其恢复到其他地方,您可能会感到头疼,因为保存的数据将覆盖主机操作系统中的任何内容。
设置 QS 指针时,不要使用 DOS: 或 UNIX: 主机扩展,只需使用 C:/Dev/Git/RepoD3 或 *nix /home/dev/git/repoD3 之类的路径。如果您使用了错误的主机扩展名,您的数据中将包含错误的 EOL 分隔符。您也可能不希望制表符转换为空格,反之亦然。对此进行试验,您可能会决定创建自己的主机扩展,它完全符合您的要求。(不在本回复的范围内。)
在第 8 步中,您可以使用 !command-line 从 TCL 进行提交。您不需要 BASIC 包装器。但是,服务器输出可能会出现问题,试图通过该通道返回,因此我强烈建议从 BASIC 执行操作系统功能。您可以使用类似这样的方法来响应多个提示:
CMD = "!do this "
CMD := OPTIONS
CMD<-1> = Response.To.First.Prompt
CMD<-1> = Second.Response
EXECUTE CMD CAPTURING OUT
这样一来,什么都不会挂断。