{"thread":{"id":"2803","subject":"[PATCH] cg-status: handle subdirs when listing heads","startedAt":"2005-12-11T19:03:05Z","lastAt":"2005-12-11T19:49:26Z","messageCount":2,"participants":["Jonas Fonseca"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"13491","messageId":"20051211190305.GD2960@diku.dk","threadId":"2803","inReplyTo":null,"subject":"[PATCH] cg-status: handle subdirs when listing heads","fromName":"Jonas Fonseca","fromEmail":"fonseca@diku.dk","sentAt":"2005-12-11T19:03:05Z","receivedAt":"2005-12-11T19:03:05Z","isPatch":true,"sender":{"key":"fonseca@diku.dk","avatar":"https://gravatar.com/avatar/f82f3ad698717c51873b020c750a92438c820a24056dc39fe4d07baa10a92264?d=mp&s=160"},"body":"Signed-off-by: Jonas Fonseca <fonseca@diku.dk>\n\n---\n\n fonseca@antimatter:~/src/cogito/cogito > cg switch -r master tmp/work\n Creating new branch tmp/work: 218ee732bee381746890bf5ffb9bfc4672795954\n Switching to branch tmp/work...\n fonseca@antimatter:~/src/cogito/cogito > cg status\n Heads:\n     cg-object-id        c10cc1d2a99b01ed3bf45d5f2ad6157940a22365\n     cg-Xedit    41447107236a7d23daa6ab0f40a0829935485bc8\n     master      218ee732bee381746890bf5ffb9bfc4672795954\n   R origin      218ee732bee381746890bf5ffb9bfc4672795954\n cat: .git/refs/heads/tmp: Is a directory\n     tmp\n\ncommit 2e7be765ca86117dc7af8aa0cd0f090269fee428\ntree 0154d7f35e6ae7c357ff18e7b1f46e2ee4d25309\nparent 218ee732bee381746890bf5ffb9bfc4672795954\nauthor Jonas Fonseca <fonseca@diku.dk> Sun, 11 Dec 2005 19:57:31 +0100\ncommitter Jonas Fonseca <fonseca@antimatter.localdomain> Sun, 11 Dec 2005 19:57:31 +0100\n\n cg-status |   28 +++++++++++++++++++---------\n 1 files changed, 19 insertions(+), 9 deletions(-)\n\ndiff --git a/cg-status b/cg-status\nindex a4c5e7a..629c796 100755\n--- a/cg-status\n+++ b/cg-status\n@@ -106,6 +106,24 @@ if [ ! \"$gitstatus\" ] && [ ! \"$workstatu\n fi\n \n \n+list_heads()\n+{\n+\tlocal path=\"$1\"\n+\n+\tif [ -d \"$path\" ]; then\n+\t\tfor head in \"$path\"/*; do\n+\t\t\tlist_heads \"$head\"\n+\t\tdone\n+\telse\n+\t\theadsha1=$(cat \"$path\")\n+\t\theadname=${path#$_git/refs/heads/}\n+\t\t[ \"$headname\" = \"cg-seek-point\" ] && continue\n+\t\tcf=\" \"; rf=\" \"\n+\t\t[ \"$headname\" = \"$_git_head\" ] && cf=\">\"\n+\t\t[ -s \"$_git/branches/$headname\" ] && rf=\"R\"\n+\t\techo -e \"  $rf$cf$headname\\t$headsha1\"\n+\tfi\n+}\n \n if [ \"$gitstatus\" ]; then\n \tmkdir -p $_git/refs/heads\n@@ -123,15 +141,7 @@ if [ \"$gitstatus\" ]; then\n \tfi\n \n \techo \"Heads:\"\n-\tfor head in $_git/refs/heads/*; do\n-\t\theadsha1=$(cat \"$head\")\n-\t\theadname=$(basename \"$head\")\n-\t\t[ \"$headname\" = \"cg-seek-point\" ] && continue\n-\t\tcf=\" \"; rf=\" \"\n-\t\t[ \"$headname\" = \"$_git_head\" ] && cf=\">\"\n-\t\t[ -s \"$_git/branches/$headname\" ] && rf=\"R\"\n-\t\techo -e \"  $rf$cf$headname\\t$headsha1\"\n-\tdone\n+\tlist_heads \"$_git/refs/heads\"\n \n \tif [ -s \"$_git/merging\" ]; then\n \t\ttmp=$(cat \"$_git/merging\")\n\n\n\f\n!-------------------------------------------------------------flip-\n\n-- \nJonas Fonseca\n"},{"id":"13496","messageId":"20051211194926.GG2960@diku.dk","threadId":"2803","inReplyTo":"20051211190305.GD2960@diku.dk","subject":"[PATCH] cg-status: handle subdirs when listing heads","fromName":"Jonas Fonseca","fromEmail":"fonseca@diku.dk","sentAt":"2005-12-11T19:49:26Z","receivedAt":"2005-12-11T19:49:26Z","isPatch":true,"sender":{"key":"fonseca@diku.dk","avatar":"https://gravatar.com/avatar/f82f3ad698717c51873b020c750a92438c820a24056dc39fe4d07baa10a92264?d=mp&s=160"},"body":"Signed-off-by: Jonas Fonseca <fonseca@diku.dk>\n\n---\n\n And here's one which handles empty directories and is cleaner.\n\ndiff --git a/cg-status b/cg-status\nindex a4c5e7a..bd4d0ce 100755\n--- a/cg-status\n+++ b/cg-status\n@@ -123,9 +123,9 @@ if [ \"$gitstatus\" ]; then\n \tfi\n \n \techo \"Heads:\"\n-\tfor head in $_git/refs/heads/*; do\n+\tfind \"$_git/refs/heads\" ! -type d | sort | while read head; do \n \t\theadsha1=$(cat \"$head\")\n-\t\theadname=$(basename \"$head\")\n+\t\theadname=${head#$_git/refs/heads/}\n \t\t[ \"$headname\" = \"cg-seek-point\" ] && continue\n \t\tcf=\" \"; rf=\" \"\n \t\t[ \"$headname\" = \"$_git_head\" ] && cf=\">\"\n\n-- \nJonas Fonseca\n"}]}