# Docuver - Document Version Control Tool
A meta tool for version control of Office documents (docx, xlsx, odt, ods, odp, pptx). Since these files are essentially ZIP archives, Docuver extracts their contents into folders for proper version control with Git.
## Supported Formats
- Microsoft Office: `.docx`, `.xlsx`, `.pptx`
- LibreOffice/OpenOffice: `.odt`, `.ods`, `.odp`
## Installation
### Prerequisites
- Python 3.6 or higher
- No external dependencies (uses Python standard library only)
### Option 1: Install from PyPI (Recommended)
```bash
pip install docuver
```
### Verify Installation
```bash
docuver --help
```
## Quick Start
### 1. Initialize Your Project
```bash
# Navigate to your project directory
cd /path/to/your/project
# Initialize docuver (creates .docuver/ config and updates .gitignore)
docuver init
```
### 2. Add Office Documents
```bash
# Copy your Office documents to the project directory
cp ~/Documents/Report.docx .
```
### 3. Extract Documents for Version Control
```bash
# Initialize project and track documents
docuver init
docuver track Report.docx
docuver track Budget.xlsx
# OR use sync for individual documents
docuver sync Report.docx
```
### 4. Check Status
```bash
docuver status
```
### 5. Clean Up and Commit
```bash
# Remove binary files (keep extracted folders)
docuver cleanup
# Commit to version control
git add .
git commit -m "Add Office documents for version control"
```
## Commands
### `init`
Initialize docuver in the current directory.
```bash
docuver init
```
This creates:
- `.docuver/` directory for project metadata
- Updates `.gitignore` to exclude Office binary files
- **Initializes Git repository** if one doesn't exist
- Migrates any existing metadata files to centralized storage
### `sync <file|folder>`
Synchronize an Office document or folder.
```bash
# Extract a document (creates Report.docxf/ folder)
docuver sync Report.docx
# Pack a folder (creates Report.docx file)
docuver sync Report.docxf
# Force operation (skip safety checks)
docuver sync Report.docx --force
```
### `track <filename>`
Track Office document(s) for version control with wildcard support and comprehensive safety checks.
```bash
# Track a specific document
docuver track Report.docx
# Track multiple documents with wildcards
docuver track *.docx
docuver track Report*.xlsx
docuver track "Documents/*.pptx"
# Force tracking (skip safety checks)
docuver track *.docx --force
# Track without XML formatting
docuver track *.docx --no-format
```
### `cleanup`
Remove binary Office files that have corresponding extracted folders with comprehensive safety checks.
```bash
# Safe cleanup with safety checks
docuver cleanup
# Force cleanup (skip safety checks)
docuver cleanup --force
```
### `status`
Show the status of Office files and extracted folders.
```bash
docuver status
```
### `completions`
Install shell completions for docuver commands.
```bash
docuver completions
```
## Workflow
### Initial Setup
```bash
# Initialize docuver in your project
docuver init
# Extract existing Office documents
docuver prepare
# Clean up binary files (optional)
docuver cleanup
# Commit the extracted folders
git add .
git commit -m "Initial docuver setup with extracted Office documents"
```
### Working with Documents
#### To edit a document:
```bash
# Pack folder to document
docuver sync Document.docxf
# Edit Document.docx in your Office application
# ... make changes ...
# Extract updated document
docuver sync Document.docx
# Clean up binary file
rm Document.docx
# Commit changes
git add Document.docxf/
git commit -m "Updated document content"
```
### Install Completions
```bash
# Install completion scripts and configure shells automatically
docuver completions
# Completions will be available in new shell sessions
# To use in current session, restart shell or run:
exec $SHELL
```
### Enhanced Completion with argcomplete
For even better completion support, install argcomplete:
```bash
pip install docuver[completions]
```
## Troubleshooting
### "Invalid or corrupted Office document"
- Ensure the file is a valid Office document
- Try opening the file in an Office application first
- Some password-protected files may not be supported
### Git shows binary changes
- Ensure `.gitignore` includes Office extensions
- Run `docuver cleanup` to remove binary files
- Check that you're committing folders, not binary files
## ⚠️ Disclaimer
Tool is still in development. Use at your own risk. Most of code was written by Windsurf IDE with Claude Sonnet 4.
Raw data
{
"_id": null,
"home_page": "https://github.com/jabezwinston/dcouver",
"name": "docuver",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.6",
"maintainer_email": null,
"keywords": "version-control, office, documents, docx, xlsx, odt, ods, odp, meta-tool, git",
"author": "Jabez Winston C",
"author_email": "Jabez Winston C <jabezwinston@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/3d/c1/2bdd2d024c7b50b41c68eb62f6c6cbefd8cc98e57598ca4640970b82f599/docuver-0.1.0.tar.gz",
"platform": null,
"description": "# Docuver - Document Version Control Tool\n\nA meta tool for version control of Office documents (docx, xlsx, odt, ods, odp, pptx). Since these files are essentially ZIP archives, Docuver extracts their contents into folders for proper version control with Git.\n\n## Supported Formats\n\n- Microsoft Office: `.docx`, `.xlsx`, `.pptx`\n- LibreOffice/OpenOffice: `.odt`, `.ods`, `.odp`\n\n## Installation\n\n### Prerequisites\n- Python 3.6 or higher\n- No external dependencies (uses Python standard library only)\n\n### Option 1: Install from PyPI (Recommended)\n```bash\npip install docuver\n```\n\n### Verify Installation\n```bash\ndocuver --help\n```\n\n## Quick Start\n\n### 1. Initialize Your Project\n```bash\n# Navigate to your project directory\ncd /path/to/your/project\n\n# Initialize docuver (creates .docuver/ config and updates .gitignore)\ndocuver init\n```\n\n### 2. Add Office Documents\n```bash\n# Copy your Office documents to the project directory\ncp ~/Documents/Report.docx .\n```\n\n### 3. Extract Documents for Version Control\n```bash\n# Initialize project and track documents\ndocuver init\ndocuver track Report.docx\ndocuver track Budget.xlsx\n\n# OR use sync for individual documents\ndocuver sync Report.docx\n```\n\n### 4. Check Status\n```bash\ndocuver status\n```\n\n### 5. Clean Up and Commit\n```bash\n# Remove binary files (keep extracted folders)\ndocuver cleanup\n\n# Commit to version control\ngit add .\ngit commit -m \"Add Office documents for version control\"\n```\n\n## Commands\n\n### `init`\nInitialize docuver in the current directory.\n\n```bash\ndocuver init\n```\n\nThis creates:\n- `.docuver/` directory for project metadata\n- Updates `.gitignore` to exclude Office binary files\n- **Initializes Git repository** if one doesn't exist\n- Migrates any existing metadata files to centralized storage\n\n### `sync <file|folder>`\nSynchronize an Office document or folder.\n\n```bash\n# Extract a document (creates Report.docxf/ folder)\ndocuver sync Report.docx\n\n# Pack a folder (creates Report.docx file)\ndocuver sync Report.docxf\n\n# Force operation (skip safety checks)\ndocuver sync Report.docx --force\n```\n\n### `track <filename>`\nTrack Office document(s) for version control with wildcard support and comprehensive safety checks.\n\n```bash\n# Track a specific document\ndocuver track Report.docx\n\n# Track multiple documents with wildcards\ndocuver track *.docx\ndocuver track Report*.xlsx\ndocuver track \"Documents/*.pptx\"\n\n# Force tracking (skip safety checks)\ndocuver track *.docx --force\n\n# Track without XML formatting\ndocuver track *.docx --no-format\n```\n\n### `cleanup`\nRemove binary Office files that have corresponding extracted folders with comprehensive safety checks.\n\n```bash\n# Safe cleanup with safety checks\ndocuver cleanup\n\n# Force cleanup (skip safety checks)\ndocuver cleanup --force\n```\n\n### `status`\nShow the status of Office files and extracted folders.\n\n```bash\ndocuver status\n```\n\n### `completions`\nInstall shell completions for docuver commands.\n\n```bash\ndocuver completions\n```\n\n## Workflow\n\n### Initial Setup\n```bash\n# Initialize docuver in your project\ndocuver init\n\n# Extract existing Office documents\ndocuver prepare\n\n# Clean up binary files (optional)\ndocuver cleanup\n\n# Commit the extracted folders\ngit add .\ngit commit -m \"Initial docuver setup with extracted Office documents\"\n```\n\n### Working with Documents\n\n#### To edit a document:\n```bash\n# Pack folder to document\ndocuver sync Document.docxf\n\n# Edit Document.docx in your Office application\n# ... make changes ...\n\n# Extract updated document\ndocuver sync Document.docx\n\n# Clean up binary file\nrm Document.docx\n\n# Commit changes\ngit add Document.docxf/\ngit commit -m \"Updated document content\"\n```\n\n### Install Completions\n```bash\n# Install completion scripts and configure shells automatically\ndocuver completions\n\n# Completions will be available in new shell sessions\n# To use in current session, restart shell or run:\nexec $SHELL\n```\n\n### Enhanced Completion with argcomplete\nFor even better completion support, install argcomplete:\n```bash\npip install docuver[completions]\n```\n\n## Troubleshooting\n\n### \"Invalid or corrupted Office document\"\n- Ensure the file is a valid Office document\n- Try opening the file in an Office application first\n- Some password-protected files may not be supported\n\n### Git shows binary changes\n- Ensure `.gitignore` includes Office extensions\n- Run `docuver cleanup` to remove binary files\n- Check that you're committing folders, not binary files\n\n## \u26a0\ufe0f Disclaimer \nTool is still in development. Use at your own risk. Most of code was written by Windsurf IDE with Claude Sonnet 4.\n",
"bugtrack_url": null,
"license": null,
"summary": "A meta tool for version control of Office documents (docx, xlsx, pptx, odt, ods, odp)",
"version": "0.1.0",
"project_urls": {
"Bug Reports": "https://github.com/jabezwinston/dcouver/issues",
"Homepage": "https://github.com/jabezwinston/dcouver",
"Source": "https://github.com/jabezwinston/dcouver"
},
"split_keywords": [
"version-control",
" office",
" documents",
" docx",
" xlsx",
" odt",
" ods",
" odp",
" meta-tool",
" git"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "e1c3d298cb248aec5e4d061f0116dd21d1f7e44b1b58a45fc9cc2fb76047c70b",
"md5": "43a26853d6bcd27c2e0fba1c03c19133",
"sha256": "0f6605db8efc89470e610c1338fe0f8a1842c1b27b80549642ab79400abda941"
},
"downloads": -1,
"filename": "docuver-0.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "43a26853d6bcd27c2e0fba1c03c19133",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.6",
"size": 18069,
"upload_time": "2025-08-10T17:05:49",
"upload_time_iso_8601": "2025-08-10T17:05:49.632292Z",
"url": "https://files.pythonhosted.org/packages/e1/c3/d298cb248aec5e4d061f0116dd21d1f7e44b1b58a45fc9cc2fb76047c70b/docuver-0.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "3dc12bdd2d024c7b50b41c68eb62f6c6cbefd8cc98e57598ca4640970b82f599",
"md5": "349e514ea27ed7bfeb618a7c90a4b2f1",
"sha256": "2bad978d22f063491e3563b29e2d0bd637de203ef0ea4b19d3166288e3368bc1"
},
"downloads": -1,
"filename": "docuver-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "349e514ea27ed7bfeb618a7c90a4b2f1",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 18616,
"upload_time": "2025-08-10T17:05:51",
"upload_time_iso_8601": "2025-08-10T17:05:51.023945Z",
"url": "https://files.pythonhosted.org/packages/3d/c1/2bdd2d024c7b50b41c68eb62f6c6cbefd8cc98e57598ca4640970b82f599/docuver-0.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-10 17:05:51",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "jabezwinston",
"github_project": "dcouver",
"github_not_found": true,
"lcname": "docuver"
}