Menu

#397 Enable versioning and roll-back

v1.1.x
closed
None
v1.1.2
New Functionality
2019-09-18
2018-11-18
Erik Hänel
No

Enable versioning and rollback by the use of the *.backup files created during saving a file.

Analysis:

Because the typical file size is somewhere around a few ten kilo bytes, a simple compression algorithm like ZIP will save enough space (around a fourth). Therefore, the following approach appears to be reasonable:

  • Create hidden .revisions folders in the file root directories (like <loadpath>) and exclude them from the file traversers used to create the file tree
  • During saving, create the backup file as an ZIP archive in the hidden root directories according <CURRENTPATH>/.revisions/FOLDER/STRUCTURE/FILENAME.EXT.revisions
  • Add the contents of the current file to the archive as revXYZ
  • Write the number of revisions into the ZIP comment section
  • Add a possibility to visualize the number of revisions in the file tree
  • Add a possibility to view the contents of a revision in the editor
  • Add a possibility to recreate the contents of a revision
  • Re-use the backup setting to control the creation of revisions

Implementation:

  • Implementation: The implementation was done as proposed by the analysis.
  • Revision: [r612]
  • Implementation test: Multiple files were modified and the revision history was examined. No deviations detected

Documentation:

  • [x] ChangesLog updated
  • [x] Code changes commented
  • Documentation articles:
    • [ ] corresponding documentation articles updated
    • [x] new documentation articles created
    • [ ] not needed
  • Language files:
    • [x] corresponding language files updated
    • [ ] not needed

Tests:

Functionality was tested in productive environment. All deviations were resolved.

Related

Commit: [r612]

Discussion

  • Erik Hänel

    Erik Hänel - 2018-11-18
    • status: open --> accepted
     
  • Erik Hänel

    Erik Hänel - 2018-11-22
    • Version: Planned --> v1.1.2
     
  • Erik Hänel

    Erik Hänel - 2019-07-06
    • Description has changed:

    Diff:

    --- old
    +++ new
    @@ -1 +1,23 @@
     Enable versioning and rollback by the use of the `*.backup` files created during saving a file.
    +
    +###Analysis:
    +(*Describe, what&#39;s the issue and which changes have to be made*)
    +
    +###Implementation:
    +* Implementation: (*Describe, what you&#39;ve changed*) 
    +* Revision: [rXXX]
    +* Implementation test: (*Describe the type of test, which you performed, and if it was successful*)
    +
    +###Documentation:
    +* [ ] ChangesLog updated
    +* [ ] Code changes commented
    +* **Documentation articles:**
    
    +    * [ ] corresponding documentation articles updated
    +    * [ ] new documentation articles created
    +    * [ ] not needed
    +* **Language files:**
    +    * [ ] corresponding language files updated
    +    * [ ] not needed
    +
    +###Tests:
    +(*Describe, which tests you performed and their outcome*)
    
    • status: accepted --> analyzing
     
  • Erik Hänel

    Erik Hänel - 2019-07-06
    • Description has changed:

    Diff:

    --- old
    +++ new
    @@ -1,7 +1,16 @@
     Enable versioning and rollback by the use of the `*.backup` files created during saving a file.
    
     ###Analysis:
    -(*Describe, what&#39;s the issue and which changes have to be made*)
    +Because the typical file size is somewhere around a few ten kilo bytes, a simple compression algorithm like ZIP will save enough space (around a fourth). Therefore, the following approach appears to be reasonable:
    +
    +* Create hidden `.revisions` folders in the file root directories (like `&lt;loadpath&gt;`) and exclude them from the file traversers used to create the file tree
    +* During saving, create the backup file as an ZIP archive in the hidden root directories according `&lt;CURRENTPATH&gt;/.revisions/FOLDER/STRUCTURE/FILENAME.EXT.revisions`
    +* Add the contents of the current file to the archive as `revXYZ`
    +* Write the number of revisions into the ZIP comment section
    +* Add a possibility to visualize the number of revisions in the file tree
    +* Add a possibility to view the contents of a revision in the editor
    +* Add a possibility to recreate the contents of a revision
    +* Re-use the backup setting to control the creation of revisions
    
     ###Implementation:
    
     * Implementation: (*Describe, what you&#39;ve changed*) 
    
     
  • Erik Hänel

    Erik Hänel - 2019-07-11
    • status: analyzing --> implementing
     
  • Erik Hänel

    Erik Hänel - 2019-08-19
    • Description has changed:

    Diff:

    --- old
    +++ new
    @@ -13,19 +13,19 @@
    
     * Re-use the backup setting to control the creation of revisions
    
     ###Implementation:
    -* Implementation: (*Describe, what you&#39;ve changed*) 
    -* Revision: [rXXX]
    -* Implementation test: (*Describe the type of test, which you performed, and if it was successful*)
    +* Implementation: The implementation was done as proposed by the analysis.
    +* Revision: [r612]
    +* Implementation test: Multiple files were modified and the revision history was examined. No deviations detected
    
     ###Documentation:
    -* [ ] ChangesLog updated
    -* [ ] Code changes commented
    +* [x] ChangesLog updated
    +* [x] Code changes commented
    
     * **Documentation articles:**
         * [ ] corresponding documentation articles updated
    -    * [ ] new documentation articles created
    +    * [x] new documentation articles created
         * [ ] not needed
     * **Language files:**
    -    * [ ] corresponding language files updated
    +    * [x] corresponding language files updated
         * [ ] not needed
    
     ###Tests:
    
    • status: implementing --> testing
     

    Related

    Commit: [r612]

  • Erik Hänel

    Erik Hänel - 2019-09-18
    • Description has changed:

    Diff:

    --- old
    +++ new
    @@ -29,4 +29,4 @@
    
         * [ ] not needed
    
     ###Tests:
    -(*Describe, which tests you performed and their outcome*)
    +Functionality was tested in productive environment. All deviations were resolved.
    
    • status: testing --> closed
     

Anonymous
Anonymous

Add attachments
Cancel





MongoDB Logo MongoDB