2016-04-30 7 views
1

私はこの問題にアプローチするための最良の方法だろうどの知りたい:データベースを使用して独自のバージョン管理システムを作成していますか?

  1. ユーザーが記事やプレス保存を書き込みます。 (データベースに保存)
  2. ユーザが前の記事を編集して[保存]を押します。ユーザーが記事を編集し、各段階で繰り返し

  • (gitのコミットのように)、私はそれぞれの間に行われた変更(加算と減算)がコミットをユーザに示したいと思います。

    私はこれを行うには、次の2つの方法の考え:

    1. は、データベースに保存された記事の内容のすべての反復を保管してください。別名は、記事の内容全体を含む各保存用の新しい行を作成します。次に、違いを確認してバックエンドのファイルを比較します。

      +-----------+---------+----------------------------+ 
      | ArticleID | Version |   Body   | 
      +-----------+---------+----------------------------+ 
      |   1 |  3 | This is a random article. | 
      |   1 |  2 | This is a random article | 
      |   1 |  1 | a random article   | 
      +-----------+---------+----------------------------+ 
      
    2. 以下のようにそれを格納することによって記事へのすべての変更を記録し、ユーザーは、バージョン1と2の間の違いを見たいとき、バージョン1を取得し、追加変更が

      +-----------+---------+-------------------+-------------------+---+ 
      | ArticleID | Version | CharacterPosition |   +   | - | 
      +-----------+---------+-------------------+-------------------+---+ 
      |   1 |  3 |    24 | .     | | 
      |   1 |  2 |     0 | This is   | | 
      |   1 |  1 |     0 | a random article | | 
      +-----------+---------+-------------------+-------------------+---+ 
      
    3. を作りました
    +1

    さて、cvs、svn、git、tfs、...差分Apprachを使用してください。これはあなたに何を伝えますか? – derpirscher

    答えて

    1

    私はオプション1をお勧めします。オプション2を使用する場合、someomeが異なる位置から文字を追加または削除するときに問題が発生します。それ以外に、3つのバージョンの違いが何であるかを見たい場合は、コーディングの難しさがあります。

    関連する問題