Add cross-machine sync tooling (clone/pull/push all module repos)
repos.txt + sync-*.sh let any machine (Mac or Windows/Git Bash) hydrate all 49 module repos and keep them in sync via GitHub+gitea. Pulls are fast-forward only (never clobber local work); pushes send commits only and flag uncommitted repos. See SYNC.md for the two-machine workflow. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
58
SYNC.md
Normal file
58
SYNC.md
Normal file
@@ -0,0 +1,58 @@
|
||||
# Syncing Odoo-Modules across machines (Mac + Windows)
|
||||
|
||||
Each module/suite folder here is its **own git repo** (private on GitHub at
|
||||
`gsinghpal/<name>`, mirrored to gitea `admin/<name>`). This parent folder is a
|
||||
separate repo that holds the shared files (CLAUDE.md, docs, scripts, these sync
|
||||
helpers). The cloud (GitHub) is the hub: both machines push to it and pull from it.
|
||||
|
||||
Nothing here ever deletes your work. Pulls are fast-forward only, so local changes
|
||||
are never overwritten; pushes only send commits.
|
||||
|
||||
## First-time setup on a new machine (e.g. the Windows PC)
|
||||
|
||||
1. Install **Git** (Git for Windows includes "Git Bash", which runs these scripts).
|
||||
2. Sign in to GitHub once so git can push/pull:
|
||||
- easiest: `gh auth login` (or let Git Credential Manager prompt on first pull)
|
||||
3. Get everything:
|
||||
```
|
||||
git clone https://github.com/gsinghpal/Odoo-Modules.git
|
||||
cd Odoo-Modules
|
||||
bash sync-clone-all.sh
|
||||
```
|
||||
That clones the parent, then all 49 module repos into place.
|
||||
|
||||
(gitea is an optional second mirror. The first push to it will ask for your
|
||||
`git.nexasystems.ca` login. If you only use GitHub, those gitea lines just fail
|
||||
quietly and GitHub stays the source of truth.)
|
||||
|
||||
## Daily workflow (same on Mac and Windows)
|
||||
|
||||
- **Before you start:** `bash sync-pull-all.sh` - pulls the latest for the parent
|
||||
and every module. Anything with local changes or a diverged history is skipped and
|
||||
listed, so you can handle it yourself.
|
||||
- **Do your work**, then **commit inside the module(s) you changed**:
|
||||
```
|
||||
cd fusion_clock
|
||||
git add -A
|
||||
git commit -m "..."
|
||||
cd ..
|
||||
```
|
||||
- **When done:** `bash sync-push-all.sh` - pushes every committed change to GitHub
|
||||
+ gitea, and flags any repo that still has uncommitted changes (so nothing is
|
||||
silently left behind).
|
||||
|
||||
## Golden rule for two machines
|
||||
|
||||
Push from the machine you worked on **before** you switch to the other one, and run
|
||||
`sync-pull-all.sh` on the other machine **before** you start. That keeps both in sync
|
||||
and avoids diverged histories.
|
||||
|
||||
## Helper scripts
|
||||
|
||||
| Script | What it does |
|
||||
|--------|--------------|
|
||||
| `sync-clone-all.sh` | Clone any module repo listed in `repos.txt` that isn't here yet. |
|
||||
| `sync-pull-all.sh` | Fast-forward pull the parent + all modules (safe, never clobbers). |
|
||||
| `sync-push-all.sh` | Push committed work for the parent + all modules to GitHub + gitea. |
|
||||
| `sync-refresh-list.sh` | Rebuild `repos.txt` from the repos present here (after adding/removing a module). |
|
||||
| `repos.txt` | The list of module repo names the scripts act on. |
|
||||
Reference in New Issue
Block a user