How does your system treat file versions?
People simply don't consider the complexity of versioning management. Here is how differently systems can treat the same file:
-
Filename-based versioning: Each upload creates a separate file with a modified filename, e.g. Drawing.pdf, Drawing_v2.pdf, Drawing_v3.pdf. Each is an independent document. The renaming is usually done by a person or the integration, not the system.
-
Silent overwrite: The upload replaces the existing file and the previous content is gone. No error, no history. Example: Amazon S3 with versioning off.
-
Native version history: The system maintains one logical document with multiple versions underneath it. The filename, path and document ID remain unchanged, while previous content is kept internally, though not always forever. Google Drive, for example, typically purges older versions of uploaded files after about 30 days unless they are marked Keep Forever. Examples: SharePoint, Google Drive and Amazon S3 with versioning enabled.
-
Automatic renaming: Uploading a file with an existing name creates a duplicate with an automatically modified name, e.g. Drawing (1).pdf. The original remains untouched.
-
Upload rejection: The system refuses to overwrite an existing file and returns a conflict/error. The integration must decide whether to rename, replace or use another operation.
-
Explicit version creation: A separate API endpoint or operation is required to upload a new version of an existing document. Typically, this requires the existing document ID rather than just its filename.
-
Hybrid models: Systems combine these behaviours, e.g. native version history with a dedicated version-upload endpoint, or automatic renaming alongside versioning.
For system integrations, investigate six things:
- document identification,
- duplicate handling,
- overwrite behaviour,
- version creation mechanism,
- historical version retrieval and retention, and
- metadata inheritance.
How does your system treat file versions?