我正在研究一个小应用程序,允许我在每次更改之前修改文件和每个文件的版本。我希望应用程序执行的是唯一标记每个文件,以便每当打开相同的文件时,该特定文件的历史记录就可以恢复。我没有使用任何大版本控制工具。我该如何在语法上做到这一点?我如何唯一标记文件并且它是多种版本?
回答
简单的解决方案。使用已存在的verison控件(例如Git),但是如果你真的想这样做,那么试试这个。
每次创建一个新版本的文件的以前版本复制到一个单独的隐藏的目录,并在其中认为文件的校验和目录中的配置文件。 Checksum将“更可能”是独一无二的,因为它的文件散列值(每次文件更改,校验和会不同 - 你需要自己计算校验和。)
当你打开一个文件时,检查是否存在是目录中的配置文件,并将校验和与已打开的校验和进行比较。如果它们是相同的,那么你在同一个文件中。这就是它的工作原理。
你可以使用校验和来优化它。因此,如果用户进入文件改变了事情,就会变回原来的状态并保存。校验和应该返回相同的东西(除非你包括修改的日期和时间等)
每个文件夹应该有一个名称,它遵循一个模式(filenameVn.n例如someTextFile.txt.v1.0),那么你将能够找出你在历史中浏览的目录应该说的是什么。
另一种方法是简单地一些标记复制的文件,并追加到它(校验和可能?版本号?),那么你就不需要额外的文件夹结束。
另一种方法是调用任何记录的校验文件并保存版本的历史(连同相应的校验)在一个单独的配置文件,然后当你想要找出该文件提到它,你想要访问被调用。因此,每个版本将被引用基于自己的校验和(如在Git中)。
因此,总结每个文件版本将存储在某个地方,你将能够验证它们是否相同(所以你可以优化通过避免存储多个文件而不改变它们并浪费空间),并且您将能够动态地确定每个版本的位置并访问它。
希望它让你如何开始多一点理解。
有趣的解决方案 – Kobojunkie 2013-02-24 20:45:46
- 1. 如何使用不同版本的V8编译nodejs并且它是否聪明?
- 2. 我正在尝试将文本从控制台记录到文本文件,并且未创建文本文件
- 3. 如何从webview中选择文本并且不复制它?
- 4. Apache Flink(如何唯一标记作业)
- 5. 检索数据并显示它以另一种形式标记
- 6. 如何选择哪种类型是唯一标识符
- 7. 强制Subversion将“未版本控制”文件标记为已解决且为最新版本
- 8. 如果依赖项是唯一的快照版本并且调用了安装,maven会选择什么?
- 9. SVN - 如何处理一个项目,二种版本的,唯一不同的人有几个其他文件
- 10. 我如何定位一个div并且它是处理点击的孩子?
- 11. 如何从我的服务器运行我的.app文件并且版本错误?
- 12. 唯一文件标识符
- 13. 我们如何版本JavaScript文件
- 14. 我如何只选择唯一的记录(基于标准)
- 15. 将多个记录合并为一个记录,并且有多列
- 16. 支持多种插件版本
- 17. 这是一种在PHP中创建唯一URL标记的好方法。
- 18. 标记唯一的行吗?
- 19. 记事本++崩溃并覆盖文件的空版本
- 20. 包含一个JavaScript文件,因为它是用脚本标记写的
- 21. 在一行文本文件中查找多个唯一字
- 22. 生成各种版本的Boost UUID(通用唯一ID)
- 23. 如何将多个CSS文件编译为zip/tar文件并将它们包含在HTML页面标记中?
- 24. PL/SQL光标选择唯一记录并打印在平面文件中
- 25. SVN - 为每个版本化文件自动生成唯一标识
- 26. 如何获得另一个EXE的汇编版本(不是文件版本)?
- 27. 如何将多个CSV文件合并为一个,只有唯一的值
- 28. 我如何知道我是唯一一个打开文件句柄的人?
- 29. Android版多种语言的版本
- 30. 删除TextField中的重复文本mysql并且无法使其唯一
我很困惑,是你的问题如何编写你自己的版本控制系统,让您不必使用现有的? – 2013-02-24 18:33:08
那么你说你不*使用现有的版本控制解决方案 - 显而易见的问题是“为什么不?” - 我建议你尝试使用Git,Mercurial或类似的东西。你不一定需要用服务器或类似的东西进行*集中式版本控制。当地的东西可能会很好。 – 2013-02-24 18:33:11
我宁愿让我自己的代码为我做这件事。 – Kobojunkie 2013-02-24 18:52:10