MOVE from versioned source:

Note that sending a MOVE request with a Target-Selector header is ILLEGAL; it is impossible to delete or move away a single version.  Use COPY instead to specify a source version.  Thus these two tables assume no Target-Selector header.

 

Destination state

Overwrite: T

Overwrite: F

Overwrite: update

Exists, versioned

Replace dest version-history with src version-history.

Fail.

Entire src version-history is added onto the dest history.

Exists, NOT versioned

Replace dest with default version from source

Fail

Same as T

Doesn’t exist

Create a versioned resource at the dest w/ all the history from src.

Same as T

Same as T

Doesn’t exist, can’t be versioned

Create new resource at the dest with default version from source

Same as T

Fail

 

MOVE from unversioned source:

(since the target may be versioned, and since versioning defines Overwrite: update,  the versioning spec must address this scenario)

Destination state:

Overwrite: T

Overwrite: F

Overwrite: update

Exists, versioned

Replaces all dest versions with single version from source

Fail

Create a new version at dest with contents of src.

Exists, NOT versioned

Defined by WebDAV to replace dest.

Fail

Same as T

Doesn’t exist

Defined by WebDAV to create dest

Same as T

Same as T

 

Abbreviations used:

-         dest à destination

-         src à source

-         w/ à with

COPY from versioned source: 

If the source is versioned, COPY can legitimately have a target-selector header.  If it doesn’t, does the user intend to COPY the entire history, or the default version?  This table specifies…

Destination State

Overwrite: T

Overwrite: F

Overwrite: update

Exists, versioned

Replace entire version-history at dest w/ selected version from src

Fail

Create new version at dest w/ selected version from src

Exists, not versioned

Replace dest w/ selected version from src

Fail

Fail

Doesn’t exist

Create unversioned dest w/selected content from src

Same as T

Create new versioned resource, or fail?

Doesn’t exist, and can’t be versioned

Create unversioned dest w/ selected content from src

Same as T

Fail

COPY Behaviour, non-versioned source

In this case, Target-Selector header is illegal…

Destination State

Overwrite: T

Overwrite: F

Overwrite: update

Exists, versioned

Illegal to replace an existing version history with nothing?

Fail?

Create new version at dest w/ content from src.

Exists, not versioned

Defined by WebDAV to overwrite content

Fail

Illegal?

Doesn’t exist

Defined by WebDAV to create dest

Succeed

Meaningless – perhaps should do same as T