|Title|Private Versioned Document Drafts
|Date|10-Sep-2006 06:23:33 EEST
|JSPWiki version|2.4.x
|[Idea Category]|ProviderIdea
|[Idea Status]|NewIdea

I am using the file system versioning and it seems to work quite well. One thing I think would add some value to version providers in general is to implement something that is similar to feature branches. This would allow a user to work on a draft copy and continually save, without causing version clutter. For example:

* The last check in version of a page might be 5
* I edit the page but suspect that I won't have it complete in the short term, so will need to save an intermediate copy
* Rather than click "save" I choose to save a draft copy (equivalent to a private branch)
* Instead of being committed as version 6, this new copy is saved as 5.0.1 - nobody else can see it except me
* I make some more changes, and save again as 5.0.2.
* Now my work is complete, so I choose to "merge" my changes back to the main trunk as 6
* The feature branch can now be discarded, reducing the versioning clutter 

Now, the tricky part is how to handle the merge. Some options are:

* lock the document while performing the work (easiest, similar to current model)
* apply my changes back to the main trunk, blowing away any subsequent edits that another user makes (easy)
* deny the merge (easy, but impractical)
* perform some sort of smart merge (harder to implement in software) 

If the second option was implemented and I was a nice person, I would just manually merge the content myself. This would probably be the easiest approach to take in the beginning. You could also limit the use of private branches to certain trusted users.
Also, the reason for creating the branch as 5.0.1 rather than 5.1 would be if you were to allow multiple drafts from different users against the same revision.



The [Non Versioning Tag|IdeaNoversioningTag] idea is related, as it shares the benefit of not adding to the revision history of a document until it is ready to be officially published.

-- DavidC, 10-Sep-2006

''-- JDuprez'' : Similarly, [Idea Delete Individual Revision] would enable to manually discard intermediate revisions.

VersionOverwrite also tries to achieve the same goal, but misses out on being able to revert back to a previous minor revision.

--DavidC, 10-Sep-2006

The similar ideas listed above revolve around the idea of not cluttering disk space and version history with "minor" revisions, which is a big concern to me already. But there another reason why this [idea|Idea Private Versioned Document Drafts] should stand of its own, it's that the "private branch" represents a set of intermediate, "private" states, between two officially published versions. It's really useful when you don't want the new state of the document to appear until it's OK, for example when the page is a reference document.

See also [Idea Specific Access Level For Comment] and [Idea Peer Review]: all these ideas and yours may combine into a pretty nifty document publishing tool, with edition/approval /publication workflows.

-- JDuprez