【发布时间】:2022-07-10 01:00:43
【问题描述】:
TLA+ 工具箱创建了大量文件和目录。使用规范和模型并将它们保持在 git 中的版本以及使用工具箱的好方法是什么?正常的工作流程是什么样的?
【问题讨论】:
标签: tla+
TLA+ 工具箱创建了大量文件和目录。使用规范和模型并将它们保持在 git 中的版本以及使用工具箱的好方法是什么?正常的工作流程是什么样的?
【问题讨论】:
标签: tla+
我在.gitignore 中完全忽略了*.toolbox。这意味着模型配置没有保存在不理想的 repo 中。
使用 VS Code 插件可以实现良好的工作流程,该插件依赖于配置模型常量和检查哪些不变量/属性的顶级 .cfg 文件。
这是我的.gitignore
*.dvi
*.old
*.out
*.pdf
*.tex
*.toolbox
我保留了一个 Makefile,用于执行一些有用的任务,例如清理这些辅助文件并将打印精美的 PDF 保存在单独的 dist/ 文件夹中。
JAVA ?= java
TLA2TOOLS_JAR = "tla2tools.jar"
TLA2TOOLS ?= $(JAVA) --class-path $(TLA2TOOLS_JAR)
TLA2TEX ?= $(JAVA) --class-path ../$(TLA2TOOLS_JAR) \
tla2tex.TLA -latexCommand "pdflatex" -shade -grayLevel 0.9
DISTDIR = dist
PDFS = $(addprefix $(DISTDIR)/, $(patsubst %.tla, %.pdf, $(wildcard *.tla)))
all: dist
pdfs: $(PDFS)
$(DISTDIR)/%.pdf: %.tla
cd $(DISTDIR) && $(TLA2TEX) ../$^
dist: pdfs clean
clean:
@echo "Cleaning auxiliary TLA2TeX files"
@rm -f $(DISTDIR)/*.aux $(DISTDIR)/*.dvi $(DISTDIR)/*.log $(DISTDIR)/*.tex
distclean: clean
rm -f $(DISTDIR)/*.pdf
.PHONY: pdfs dist clean distclean
【讨论】:
将此添加到.gitignore 将仅保留模型参数文件,例如MySpec.toolbox/MySpec__Model_1.lauch,我发现如果所有其他文件丢失,我只需要恢复模型:
# TLA+ Toolbox files, this will keep <spec_name>__<model_name>.launch
/*.toolbox/.settings
/*.toolbox/.project
/*.toolbox/*/*
/*.toolbox/*_SnapShot_*.launch
# TLA+ Toolbox PDF production artifacts
/*.toolbox/*.aux
/*.toolbox/*.log
/*.toolbox/*.tex
/*.toolbox/*.pdf
/*.pdf
您可以通过这些步骤验证它是否足够:
MySpec.toolbox/MySpec__Model_1.lauch
MySpec.toolbox/ 中除MySpec__Model_1.lauch 之外的所有内容
Add New Spec... 重新打开您的规范
Model_1
MySpec.toolbox/MySpec__Model_1.lauch所做的更改目前唯一的缺点是MySpec.toolbox/MySpec__Model_1.lauch 中存储的参数调用fpIndex 在每次模型执行时都会发生变化,请参阅https://tla.msr-inria.inria.fr/tlatoolbox/doc/model/tlc-options-page.html 中的指纹种子索引。这会导致该文件每次都出现在 git 中更改的文件中。
【讨论】: