Skip to content

Instantly share code, notes, and snippets.

@dolmen
Created May 9, 2011 05:25
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dolmen/962096 to your computer and use it in GitHub Desktop.
Save dolmen/962096 to your computer and use it in GitHub Desktop.
My patching workflow with Git (GraphViz)
// My Git worflow, when patching external projects
// Copyright (C) 2011 Olivier Mengué. All rights reserved.
// dot -Tpng -o git-patching-workflow.png git-patching-workflow.dot
digraph {
find_repo [ label="Find an interesting project on GitHub (or another Git repository)"];
use [ label="Use, test..." ];
bug_idea [ label="Find a bug or idea for a feature" ];
hack [ label="Hack, hack!!" ];
github_fork [ label="Fork on GitHub" ];
git_remote [ label="git remote add github <my-repo-url>" ];
git_push [ label="git push github feature/xxx" ];
upstream_commit1 [ label="Upstream commits" ];
upstream_commit2 [ label="Upstream commits" ];
//subgraph cluster_master {
git_clone [ label="git clone --origin upstream <upstream-url>" ];
git_pull_upstream [ label="git pull upstream" ];
git_fetch_upstream2 [ label="git fetch upstream" ];
git_fetch_upstream3 [ label="git fetch upstream" ];
git_rebase_upstream2 [ label="git rebase upstream/master" ];
git_checkout_master [ label="git checkout master" ];
//}
github_pullrq [ label="Send a GitHub pull request" ];
upstream_merges [ label="Upstream merges my patch" ];
upstream_rejects [ label="Upstream rejects my patch" ];
//subgraph cluster_branch {
git_branch [ label="git checkout -b feature/xxx" ];
git_commit [ label="Commit" ];
git_checkout_branch [ label="git checkout feature/xxx" ];
git_rebase_upstream3 [ label="git rebase upstream/master" ];
git_diff_upstream [ label="git diff upstream/master" ];
git_branch_delete [ label="git branch -d feature/xxx" ];
git_push_delete [ label="git push github :feature/xxx" ];
//}
find_repo -> git_clone -> use -> git_pull_upstream;
upstream_commit1 -> git_pull_upstream -> use;
use -> bug_idea -> git_branch -> hack -> git_commit -> hack;
git_commit -> github_fork -> git_remote -> git_push;
upstream_commit2 -> git_fetch_upstream2 -> git_rebase_upstream2 -> hack;
git_commit -> git_rebase_upstream2 -> git_push -> github_pullrq -> git_checkout_master -> use;
git_checkout_master -> wait -> upstream_merges;
wait -> upstream_rejects;
use -> wait -> use;
upstream_rejects -> hack;
upstream_merges -> git_fetch_upstream3 -> git_checkout_branch -> git_rebase_upstream3 -> git_diff_upstream -> git_branch_delete -> git_push_delete -> use;
git_diff_upstream -> hack;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment