Agent skill
julien-dev-onedrive-git-commit
Create git commits in OneDrive-synced repositories by bypassing mmap errors using git plumbing commands. Use when git commit fails with "fatal mmap failed Invalid argument" error in OneDrive folders.
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/development/julien-dev-onedrive-git-commit
SKILL.md
OneDrive Git Commit Skill
Problem
Git repositories stored in OneDrive folders often fail with fatal: mmap failed: Invalid argument when executing porcelain commands like git commit, git status, or git push.
This occurs because OneDrive's file system layer interferes with git's memory-mapped file operations.
Solution
Use git plumbing commands to bypass the mmap issue and create commits manually.
When to Use This Skill
Invoke this skill when:
- User requests git commit in a repo under OneDrive path (
/c/Users/*/OneDrive/) - Git command returns
fatal: mmap failed: Invalid argument - Standard
git commitfails repeatedly
Step-by-Step Commit Process
1. Configure Git Memory Settings
Reduce memory usage to minimize mmap calls:
cd "$REPO_PATH"
git config core.packedGitWindowSize 1m
git config core.packedGitLimit 1m
git config pack.windowMemory 1m
git config pack.packSizeLimit 1m
2. Create Git Objects for Modified Files
For each file to commit, create a blob object:
git hash-object -w path/to/file1
git hash-object -w path/to/file2
# Save the SHA hashes returned
3. Update Git Index
Register each file in the index with its SHA:
git update-index --add --cacheinfo 100644,<SHA>,path/to/file1
git update-index --add --cacheinfo 100644,<SHA>,path/to/file2
Mode codes:
100644= regular file100755= executable file120000= symbolic link
4. Create Tree Object
Generate tree from current index:
TREE_SHA=$(git write-tree)
echo $TREE_SHA
5. Get Parent Commit
Retrieve current HEAD SHA:
PARENT_SHA=$(git rev-parse HEAD)
echo $PARENT_SHA
6. Create Commit Object
Build commit with message and metadata:
COMMIT_MESSAGE="feat: Your commit message here
Detailed description if needed
Co-Authored-By: Claude <noreply@anthropic.com>"
COMMIT_SHA=$(echo "$COMMIT_MESSAGE" | git commit-tree $TREE_SHA -p $PARENT_SHA)
echo $COMMIT_SHA
7. Update Branch Reference
Move HEAD to new commit:
git update-ref refs/heads/master $COMMIT_SHA
Replace master with current branch name if different.
8. Verify Commit
Check commit was created:
git log -1 --oneline
Push to Remote
If remote is configured:
git remote -v
git push origin master
Note: Push may also fail with mmap error. If so, user must push via Git GUI or GitHub Desktop.
Alternative: Git GUI
If plumbing commands fail, recommend:
- Git GUI (installed with Git for Windows)
- GitHub Desktop
- GitKraken
These tools don't use mmap and work reliably on OneDrive.
Common Errors
"fatal: not a valid object name"
- Check SHA hashes are correct
- Ensure files were successfully written with
hash-object
"fatal: refs/heads/master: not a valid SHA1"
- Use
git rev-parse HEADto get valid parent commit - If repo is new, omit
-p $PARENT_SHAfrom commit-tree
"error: unable to write sha1 file"
- OneDrive is syncing - wait for sync to complete
- Temporarily pause OneDrive sync during git operations
Notes
- This workflow bypasses all git porcelain commands
- Works when standard git fails on OneDrive
- Commits are identical to normal git commits
- No data corruption or integrity issues
- Recommended only when necessary (mmap errors)
Example Complete Workflow
cd "$REPO_PATH"
# Configure memory
git config core.packedGitWindowSize 1m
# Create objects
SHA1=$(git hash-object -w file1.txt)
SHA2=$(git hash-object -w file2.txt)
# Update index
git update-index --add --cacheinfo 100644,$SHA1,file1.txt
git update-index --add --cacheinfo 100644,$SHA2,file2.txt
# Create tree
TREE=$(git write-tree)
# Get parent
PARENT=$(git rev-parse HEAD)
# Create commit
COMMIT=$(echo "feat: Update files" | git commit-tree $TREE -p $PARENT)
# Update branch
git update-ref refs/heads/master $COMMIT
# Verify
git log -1 --oneline
Success Criteria
Commit is successful when:
git log -1shows new commit- Commit SHA is different from parent
- Files are included in commit tree
- No mmap errors occur
Last Updated: November 2025 Tested On: Windows 11, Git 2.43+, OneDrive sync enabled
Didn't find tool you were looking for?