我正在考虑如何通过脚本程序(Perl、Shell 等)操作文本文件来适当地对与自然语言处理相关的项目进行版本控制。脚本通常读取文本数据文件作为输入,进行一些处理,然后再次将结果作为文本文件输出。所以有很多代码和数据文件,都是文本格式的。
显然,我只有版本控制代码文件,因为数据文件可能很大。而且我需要维护代码的分支,以尝试不同的方法。
(1)我目前版本控制的解决方案是将代码和数据文件混合在单个目录“proj”的同一级别:
code1, ..., codem, data1, ..., datan
使用分支时,我需要检查“proj”下“branch”中的所有文件,而不是“branch”子文件夹中的所有文件,以保持上述“平面”目录结构。
我当前解决方案的优点是最小的目录转换开销。由于代码和数据在同一个目录中,调用脚本和查看结果需要最少的“cd”:
script1 数据输入数据输出
vi 数据输出
缺点是当代码和数据文件的数量增加时,面对“proj”文件夹中的一长串文件看起来很乱。
(2)另一种方法是将代码和数据放在不同的目录下:
“项目/src”和“项目/数据”。
利弊与解决方案(1)正好相反。优点是我可以获得更清晰的目录结构。缺点是我需要在调用脚本或查看结果时进行大量目录转换:
脚本1 ../data/data-in ../data/data-out
vi ../data/data-out 或 cd ../data;vi 数据输出
如果在 src 文件夹中。所以数据文件“../data”的额外父路径带来了很多目录转换的麻烦,尤其是当需要做大量的快速实验和检查结果时。
你有什么其他的建议?谢谢。