私は小さなアプリケーションに取り組んでおり、ファイルを変更し、各ファイルを変更する前にバージョンを変更できるようにしています。アプリに実行してもらいたいのは、各ファイルを一意にマークして、同じファイルを開くたびに、その特定のファイルの履歴を取得できるようにすることです。私はこれに大きなバージョン管理ツールを使用していません。これをプログラム的にどのように行うのですか?
1 に答える
シンプルなソリューション。既に存在するバージョン コントロール (Git など) を使用しますが、本当にこれを行いたい場合は、これを試してください。
新しいバージョンを作成するたびに、以前のバージョンのファイルを別の隠しディレクトリにコピーし、そのディレクトリにそのファイルのチェックサムを保持する構成ファイルを作成します。ファイルのハッシュ値であるため、チェックサムは「おそらく」一意になります(ファイルが変更されるたびに、チェックサムは異なります-チェックサムを自分で計算する必要があります)。
ファイルを開くときは、ディレクトリにその構成ファイルがあるかどうかを確認し、チェックサムを既に開いているもののチェックサムと比較します。それらが同じ場合は、同じファイルにいます。それがどのように機能するかです。
チェックサムを使用して最適化できます。したがって、ユーザーがファイルにアクセスすると、変更が加えられ、元の状態に戻って保存されます。チェックサムは同じものを返す必要があります(変更された日付と時刻などを含めない限り)
各フォルダーには、パターン (filenameVn.n など、someTextFile.txt.v1.0) に従った名前を付ける必要があります。これにより、履歴で移動しているディレクトリが何を意味するかを把握できます。
別のアプローチは、単にファイルをコピーし、その末尾にタグを追加することです (チェックサム? バージョン番号?) そうすれば、余分なフォルダーは必要ありません。
さらに別のアプローチは、チェックサムが記録したファイルを呼び出し、バージョンの履歴を(対応するチェックサムとともに)別の構成ファイルに保存し、アクセスしたいファイルが何であるかを把握したいときにそれを参照することです。呼ばれた。そのため、各バージョンは独自のチェックサムに基づいて参照されます (Git のように)。
したがって、各ファイルバージョンがどこかに保存されることを要約すると、それらが同じであるかどうかを検証できます(そのため、複数のファイルを変更せずに保存してスペースを浪費することを避けることで最適化できます)、動的に決定できます各バージョンがどこにあり、それにアクセスできます。
開始方法について、もう少し理解を深めていただければ幸いです。