* A2
|
| * B2
| |
| * B1
| |
* | A1
| /
|/
|
* Base (develop)
Current Doppler approach (when no conflicts)
|
* Merge B in develop
|\
| \
* \ Merge A in develop
|\ \
| \ \
| * | A2
| | |
| | * B2
| | |
| | * B1
| | |
| * | A1
| | /
| |/
| /
| /
|/
|
* Base (develop)
Old Doppler approach (when there are conflicts)
|
* Merge B in develop
|\
| \
| \
| \
| \
| * Merge develop in B
| /|
| / |
| / |
| / |
|/ |
* | Merge A in develop
|\ |
| \ |
| * | A2
| | |
| | * B2
| | |
| | * B1
| | |
| * | A1
| | /
| |/
| /
| /
|/
|
* Base (develop)
Relay / Doppler when there are conflicts
|
* Merge B in develop
|\
| \
| * commit B2'
| |
| * commit B1'
| /
|/
* Merge A in develop
|\
| \
| * commit A2
| |
| * commit A1
| /
|/
* Base (develop)
|
Forms Editor
|
* commit B2'
|
* commit B1'
|
* commit A2'
|
* commit A1'
|
* Base (develop)
|
Making Sense standard
|
* Squash de B1 y B2
|
* Squash de A1 y A2
|
* Base (develop)
|
See MakingSense's Development Guidelines
- π Atomic commits
- π WIP commits
- π PR with commits for fixes (exceptions, alternatives)
- π Commits reverting previous code in the same PR
- β Interactive rebase
- β
fixup!
commit - β Reset mixed
- β Start a new branch, stealing code and ideas from the old one
- Merge as it is (with with backward merge if necessary)
- π Long living branches, see Why you should stop using rebase, Stop cherry-picking
- π Short feature branches
- π Not clear history, difficulties to revert a merge
- π Merge responsibility diluted
- π Local tests could not include remote changes
- Rebase and merge commit
- π PRs clearly visible
- π Independent commits clearly visible
- π Redundant information
- π Atomic PRs
- π Not so atomic PRs with meaninful commits
- Rebase without merge commit
- π Very clear history
- π PRs not visible easily
- π Atomic PRs
- π Not so atomic PRs with meaninful commits
- Rebase & Squash
- π Very clear history
- π PRs not visible easily
- π Atomic PRs
- π Not so atomic PRs with meaninful commits