digraph { start [shape=diamond, label="Size of the change"]; start -> mini [label="Minimal"]; start -> feature [label="Larger and/or shared"]; mini [shape=box, label="make changes\ngit commit change.cpp -m 'message'"]; mini -> push; push [shape=box, label="Push changes to main repository\n git push origin develop"]; push -> has_success; has_success [shape=diamond, label="push succeeded?"]; has_success -> success [label="Yes"]; has_success -> fail [label="No"]; success [shape=box, label="Done."]; fail [shape=box, label="Need to update develop\ngit pull origin develop"]; fail -> has_success; feature [shape=diamond, label="Has a feature already\n been created remotely?"] feature -> feature_yes [label="Yes"]; feature -> feature_no [label="No"]; feature_no [shape=box, label="Create a new feature branch\n git flow feature start feature/myfeaturename\n create README.md file\n git add README.md\n git commit README.md -m 'add README.md'\n git flow publish feature/myfeaturename"]; feature_yes [shape=box, label="Get the feature\n git flow feature track feature/myfeaturename"] feature_yes -> develop; feature_no -> develop; develop [shape=box, label="Develop your stuff, then commit locally\n git add mychange.py\n git add mychange2.cpp\n git commit -m 'some message'"]; develop -> update; update -> develop; update [shape=box, label="Keep local and remote features in sync\n git flow feature pull origin\n git flow feature push origin feature/myfeatureneame"]; update -> mymodule; mymodule [shape=diamond, label="Is this your module\n you're working on?"]; mymodule -> finish_feature [label="Yes"]; mymodule -> notmymodule [label="No"]; notmymodule [shape=box, label="Send mail to imp-dev asking for\n comments on feature/myfeature"]; notmymodule -> bdok; bdok [shape=diamond, label="Are Ben and/or Daniel OK with it?"]; bdok -> develop [label="No"]; bdok -> finish_feature [label="Yes"]; finish_feature [shape=box, label="Merge feature branch back in develop\n git flow feature finish feature/myfeaturename"]; finish_feature -> push; { rank=same; has_success; fail } }