2013-02-24 43 views
0

我正在研究一个小应用程序,允许我在每次更改之前修改文件和每个文件的版本。我希望应用程序执行的是唯一标记每个文件,以便每当打开相同的文件时,该特定文件的历史记录就可以恢复。我没有使用任何大版本控制工具。我该如何在语法上做到这一点?我如何唯一标记文件并且它是多种版本?

+0

我很困惑,是你的问题如何编写你自己的版本控制系统,让您不必使用现有的? – 2013-02-24 18:33:08

+4

那么你说你不*使用现有的版本控制解决方案 - 显而易见的问题是“为什么不?” - 我建议你尝试使用Git,Mercurial或类似的东西。你不一定需要用服务器或类似的东西进行*集中式版本控制。当地的东西可能会很好。 – 2013-02-24 18:33:11

+0

我宁愿让我自己的代码为我做这件事。 – Kobojunkie 2013-02-24 18:52:10

回答

0

简单的解决方案。使用已存在的verison控件(例如Git),但是如果你真的想这样做,那么试试这个。

每次创建一个新版本的文件的以前版本复制到一个单独的隐藏的目录,并在其中认为文件的校验和目录中的配置文件。 Checksum将“更可能”是独一无二的,因为它的文件散列值(每次文件更改,校验和会不同 - 你需要自己计算校验和。)

当你打开一个文件时,检查是否存在是目录中的配置文件,并将校验和与已打开的校验和进行比较。如果它们是相同的,那么你在同一个文件中。这就是它的工作原理。

你可以使用校验和来优化它。因此,如果用户进入文件改变了事情,就会变回原来的状态并保存。校验和应该返回相同的东西(除非你包括修改的日期和时间等)

每个文件夹应该有一个名称,它遵循一个模式(filenameVn.n例如someTextFile.txt.v1.0),那么你将能够找出你在历史中浏览的目录应该说的是什么。

另一种方法是简单地一些标记复制的文件,并追加到它(校验和可能?版本号?),那么你就不需要额外的文件夹结束。

另一种方法是调用任何记录的校验文件并保存版本的历史(连同相应的校验)在一个单独的配置文件,然后当你想要找出该文件提到它,你想要访问被调用。因此,每个版本将被引用基于自己的校验和(如在Git中)。

因此,总结每个文件版本将存储在某个地方,你将能够验证它们是否相同(所以你可以优化通过避免存储多个文件而不改变它们并浪费空间),并且您将能够动态地确定每个版本的位置并访问它。

希望它让你如何开始多一点理解。

+0

有趣的解决方案 – Kobojunkie 2013-02-24 20:45:46

相关问题