2016-04-30 3 views
1

Ich würde gerne wissen, was der beste Weg wäre, um dieses Problem zu nähern:Schreiben Sie Ihr eigenes Versionskontrollsystem mit einer Datenbank?

  1. Ein Benutzer schreibt einen Artikel speichern und Pressen. (in der Datenbank gespeichert)
  2. Ein Benutzer bearbeitet den vorherigen Artikel und drückt auf Speichern. (Wie git commit)
  3. Repeat

In jedem Stadium der Benutzer den Artikel bearbeitet, möchte ich den Benutzer zeigen, die Änderungen (Additionen und Subtraktionen), die zu begehen während jeder gemacht wurden.

Ich dachte an zwei Möglichkeiten dies zu tun:

  1. Halten Sie alle Wiederholungen der Artikelinhalte in der Datenbank gespeichert. Aka erstellt für jeden Speicher eine neue Zeile, die den gesamten Inhalt des Artikels enthält. Vergleichen Sie dann die Dateien im Backend, indem Sie nach Unterschieden suchen.

    +-----------+---------+----------------------------+ 
    | ArticleID | Version |   Body   | 
    +-----------+---------+----------------------------+ 
    |   1 |  3 | This is a random article. | 
    |   1 |  2 | This is a random article | 
    |   1 |  1 | a random article   | 
    +-----------+---------+----------------------------+ 
    
  2. oder aufzeichnen alle Änderungen an den Artikel von ihm wie unten zu speichern, und dann, wenn der Benutzer es wünscht, die Unterschiede zwischen Version 1 und 2 erhält Version 1 und fügen Sie die Änderungen zu sehen,

    +-----------+---------+-------------------+-------------------+---+ 
    | ArticleID | Version | CharacterPosition |   +   | - | 
    +-----------+---------+-------------------+-------------------+---+ 
    |   1 |  3 |    24 | .     | | 
    |   1 |  2 |     0 | This is   | | 
    |   1 |  1 |     0 | a random article | | 
    +-----------+---------+-------------------+-------------------+---+ 
    
+1

Nun, cvs, svn, git, tfs, ... verwenden Sie die differential apprach. Was sagt dir das? – derpirscher

Antwort

1

Ich würde Option 1 vorschlagen. Wenn Sie Option zwei verwenden, werden Sie in Schwierigkeiten geraten, wenn jemand Zeichen aus verschiedenen Positionen hinzufügt oder entfernt. Außerdem würde es einige Codierungsschwierigkeiten geben, wenn Sie sehen möchten, was der Unterschied mit drei Versionen zurück ist.

Verwandte Themen