-
Notifications
You must be signed in to change notification settings - Fork 14
Description
Idea for a new projects command to reconcile/merge a local project on the filesystem against the remote project
This is basically a merge helper
The problem is:
- I make changes to workflow A on my file system
- In the app, someone else makes changes to workflow B
- I want to be able to reflect those remote changes on workflow B on my file system
In other words, I want to fetch the latest remote version so I'm up to date, and selectively checkout only some workflows.
The danger is that if I force deploy, I'm also force deploying the old workflows and overwriting changes. I could do deploy --workflows A to only deploy one workflow. But my file system is still out of sync - the fs and project are not consistent, and sooner or later I'll hit problems.
The idea of reconcile is a sort of expand-and-merge.
It'll run a checkout. For each workflow that is different to the filesystem, we ask the user whether to checkout the remote, local or both. If both, we duplicate the workflow (probably we do ./workflows/A.app/ and the user must manually copy any diffs into their local workflow, the delete the duplication.
Once reconciliation is complete, we do openfn project reconcile complete and update the local project file. Now the FS and project are in sync. When running deploy, we can safely push the local version to the server. Hmm, note that on deploy, when fetching, the local project file is now ahead of the server... so that's kinda fun.
Note that this all works at the workflow level - there's also conflicts within a workflow. Which I think is an extension of this strategy.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status