{"thread":{"id":"18020","subject":"topgit patches","startedAt":"2009-02-25T19:58:56Z","lastAt":"2009-03-03T07:54:23Z","messageCount":16,"participants":["Uwe Kleine-König","Petr Baudis","martin f krafft"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"106249","messageId":"20090225195856.GA12372@pengutronix.de","threadId":"18020","inReplyTo":null,"subject":"topgit patches","fromName":"Uwe Kleine-König","fromEmail":"u.kleine-koenig@pengutronix.de","sentAt":"2009-02-25T19:58:56Z","receivedAt":"2009-02-25T19:58:56Z","isPatch":false,"sender":{"key":"u.kleine-koenig@pengutronix.de","avatar":"https://gravatar.com/avatar/354b5e3ceb2806a2f1e1e382ac29ddbdad18288654da62b61eb13583a857eee7?d=mp&s=160"},"body":"Hello,\n\nThe following changes since commit 8c77c342166ddc6ecb3840628d89ddc5bb6b043b:\n  Kirill Smelkov (1):\n        tg-completion: complete options for `tg remote`\n\nare available in the git repository at:\n\n  git://git.pengutronix.de/git/ukl/topgit.git pu\n\nUwe Kleine-König (5):\n      [TOPGIT] limit rev-list in branch_contains to a single rev\n      [TOPGIT] allow working with annihilated branches\n      [TOPGIT] make tg remote idempotent\n      [TOPGIT] make creating a commit from a topgit branch a function\n      [TOPGIT] implement linearize export method\n\n tg-export.sh  |   94 ++++++++++++++++++++++++++++++++++++++++++++++++++-------\n tg-remote.sh  |    6 ++--\n tg-summary.sh |   11 ++++++-\n tg.sh         |   19 ++++++++++-\n 4 files changed, 113 insertions(+), 17 deletions(-)\n\nI consider the first three as ready to pull (they form my master branch\nat the repo above).  The fourth commit is just preparing the fifth.  The\nfifth commit implements a new export method that I use often.  The error\nhandling isn't well tested, just because I don't usually run into merge\nconflicts in my series :-)\n\nI look forward to comments, especially for the last commit.\n\nFor review purposes I send the patches as a reply to this mail.\n\nBest regards\nUwe\n\n-- \nPengutronix e.K.                              | Uwe Kleine-König            |\nIndustrial Linux Solutions                    | http://www.pengutronix.de/  |\n"},{"id":"106253","messageId":"1235592240-12616-1-git-send-email-u.kleine-koenig@pengutronix.de","threadId":"18020","inReplyTo":"20090225195856.GA12372@pengutronix.de","subject":"[PATCH] [TOPGIT] limit rev-list in branch_contains to a single rev","fromName":"Uwe Kleine-König","fromEmail":"u.kleine-koenig@pengutronix.de","sentAt":"2009-02-25T20:03:56Z","receivedAt":"2009-02-25T20:03:56Z","isPatch":true,"sender":{"key":"u.kleine-koenig@pengutronix.de","avatar":"https://gravatar.com/avatar/354b5e3ceb2806a2f1e1e382ac29ddbdad18288654da62b61eb13583a857eee7?d=mp&s=160"},"body":"This eases reading of debug output using sh -x and probably helps\nperformance, too.\n\nSigned-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>\n---\n tg.sh |    2 +-\n 1 files changed, 1 insertions(+), 1 deletions(-)\n\ndiff --git a/tg.sh b/tg.sh\nindex 8c23d26..ccb40cd 100644\n--- a/tg.sh\n+++ b/tg.sh\n@@ -77,7 +77,7 @@ measure_branch()\n # Whether B1 is a superset of B2.\n branch_contains()\n {\n-\t[ -z \"$(git rev-list ^\"$1\" \"$2\" --)\" ]\n+\t[ -z \"$(git rev-list --max-count=1 ^\"$1\" \"$2\" --)\" ]\n }\n \n # ref_exists REF\n-- \n1.5.6.5\n"},{"id":"106251","messageId":"1235592240-12616-2-git-send-email-u.kleine-koenig@pengutronix.de","threadId":"18020","inReplyTo":"1235592240-12616-1-git-send-email-u.kleine-koenig@pengutronix.de","subject":"[PATCH] [TOPGIT] allow working with annihilated branches","fromName":"Uwe Kleine-König","fromEmail":"u.kleine-koenig@pengutronix.de","sentAt":"2009-02-25T20:03:57Z","receivedAt":"2009-02-25T20:03:57Z","isPatch":true,"sender":{"key":"u.kleine-koenig@pengutronix.de","avatar":"https://gravatar.com/avatar/354b5e3ceb2806a2f1e1e382ac29ddbdad18288654da62b61eb13583a857eee7?d=mp&s=160"},"body":"If you decide that you want to drop a patch, you can just merge in its\nbase with strategy \"theirs\".  Then you have base=topic and so no .top*\nfiles any more.  This patch fixes tg summary and the helper function\nrecurse_deps() to handle these annihilated branches as if they don't\nexist and don't show up in .topdeps files.\n\nSigned-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>\n---\n tg-summary.sh |   11 ++++++++++-\n tg.sh         |   17 ++++++++++++++++-\n 2 files changed, 26 insertions(+), 2 deletions(-)\n\ndiff --git a/tg-summary.sh b/tg-summary.sh\nindex 842d95a..50ee883 100644\n--- a/tg-summary.sh\n+++ b/tg-summary.sh\n@@ -53,13 +53,22 @@ fi\n git for-each-ref refs/top-bases |\n \twhile read rev type ref; do\n \t\tname=\"${ref#refs/top-bases/}\"\n+\t\tif branch_annihilated \"$name\"; then\n+\t\t\tcontinue;\n+\t\tfi;\n+\n \t\tif [ -n \"$terse\" ]; then\n \t\t\techo \"$name\"\n \t\t\tcontinue\n \t\tfi\n \t\tif [ -n \"$graphviz\" ]; then\n \t\t\tgit cat-file blob \"$name:.topdeps\" | while read dep; do\n-\t\t\t\techo \"\\\"$name\\\" -> \\\"$dep\\\";\"\n+\t\t\t\tdep_is_tgish=true\n+\t\t\t\tref_exists \"refs/top-bases/$dep\"  ||\n+\t\t\t\t\tdep_is_tgish=false\n+\t\t\t\tif ! \"$dep_is_tgish\" || ! branch_annihilated $dep; then\n+\t\t\t\t\techo \"\\\"$name\\\" -> \\\"$dep\\\";\"\n+\t\t\t\tfi\n \t\t\tdone\n \t\t\tcontinue\n \t\tfi\ndiff --git a/tg.sh b/tg.sh\nindex ccb40cd..5bb2d0c 100644\n--- a/tg.sh\n+++ b/tg.sh\n@@ -94,6 +94,16 @@ has_remote()\n \t[ -n \"$base_remote\" ] && ref_exists \"remotes/$base_remote/$1\"\n }\n \n+branch_annihilated()\n+{\n+\t_name=\"$1\";\n+\n+\t# use the merge base in case the base is ahead.\n+\tmb=\"$(git merge-base \"refs/top-bases/$_name\" \"$_name\")\";\n+\n+\ttest \"$(git rev-parse \"$mb^{tree}\")\" = \"$(git rev-parse \"$_name^{tree}\")\";\n+}\n+\n # recurse_deps CMD NAME [BRANCHPATH...]\n # Recursively eval CMD on all dependencies of NAME.\n # CMD can refer to $_name for queried branch name,\n@@ -116,7 +126,12 @@ recurse_deps()\n \tif has_remote \"top-bases/$_name\"; then\n \t\techo \"refs/remotes/$base_remote/top-bases/$_name\" >>\"$_depsfile\"\n \tfi\n-\tgit cat-file blob \"$_name:.topdeps\" >>\"$_depsfile\"\n+\n+\t# if the branch was annihilated, there exists no .topdeps file\n+\tif ! branch_annihilated \"$_name\"; then\n+\t\t#TODO: handle nonexisting .topdeps?\n+\t\tgit cat-file blob \"$_name:.topdeps\" >>\"$_depsfile\";\n+\tfi;\n \n \t_ret=0\n \twhile read _dep; do\n-- \n1.5.6.5\n"},{"id":"106254","messageId":"1235592240-12616-3-git-send-email-u.kleine-koenig@pengutronix.de","threadId":"18020","inReplyTo":"1235592240-12616-2-git-send-email-u.kleine-koenig@pengutronix.de","subject":"[PATCH] [TOPGIT] make tg remote idempotent","fromName":"Uwe Kleine-König","fromEmail":"u.kleine-koenig@pengutronix.de","sentAt":"2009-02-25T20:03:58Z","receivedAt":"2009-02-25T20:03:58Z","isPatch":true,"sender":{"key":"u.kleine-koenig@pengutronix.de","avatar":"https://gravatar.com/avatar/354b5e3ceb2806a2f1e1e382ac29ddbdad18288654da62b61eb13583a857eee7?d=mp&s=160"},"body":"Before this patch each call to tg remote added three config entries\nno matter if they already existed.  After some time my .git/config was\ncrowded.\n\nSigned-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>\n---\n tg-remote.sh |    6 +++---\n 1 files changed, 3 insertions(+), 3 deletions(-)\n\ndiff --git a/tg-remote.sh b/tg-remote.sh\nindex c3e8bd3..3a40081 100644\n--- a/tg-remote.sh\n+++ b/tg-remote.sh\n@@ -27,9 +27,9 @@ git config \"remote.$name.url\" >/dev/null || die \"unknown remote '$name'\"\n \n ## Configure the remote\n \n-git config --add \"remote.$name.fetch\" \"+refs/top-bases/*:refs/remotes/$name/top-bases/*\"\n-git config --add \"remote.$name.push\" \"+refs/top-bases/*:refs/top-bases/*\"\n-git config --add \"remote.$name.push\" \"+refs/heads/*:refs/heads/*\"\n+git config --replace-all \"remote.$name.fetch\" \"+refs/top-bases/*:refs/remotes/$name/top-bases/*\" \"\\\\+refs/top-bases/\\\\*:refs/remotes/$name/top-bases/\\\\*\"\n+git config --replace-all \"remote.$name.push\" \"+refs/top-bases/*:refs/top-bases/*\" \"\\\\+refs/top-bases/\\\\*:refs/top-bases/\\\\*\"\n+git config --replace-all \"remote.$name.push\" \"+refs/heads/*:refs/heads/*\" \"\\\\+refs/heads/\\\\*:refs/heads/\\\\*\"\n \n info \"Remote $name can now follow TopGit topic branches.\"\n if [ -z \"$populate\" ]; then\n-- \n1.5.6.5\n"},{"id":"106252","messageId":"1235592240-12616-4-git-send-email-u.kleine-koenig@pengutronix.de","threadId":"18020","inReplyTo":"1235592240-12616-3-git-send-email-u.kleine-koenig@pengutronix.de","subject":"[PATCH] [TOPGIT] make creating a commit from a topgit branch a function","fromName":"Uwe Kleine-König","fromEmail":"u.kleine-koenig@pengutronix.de","sentAt":"2009-02-25T20:03:59Z","receivedAt":"2009-02-25T20:03:59Z","isPatch":true,"sender":{"key":"u.kleine-koenig@pengutronix.de","avatar":"https://gravatar.com/avatar/354b5e3ceb2806a2f1e1e382ac29ddbdad18288654da62b61eb13583a857eee7?d=mp&s=160"},"body":"This helps avoiding code duplication for the next commit.\n\nSigned-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>\n---\n tg-export.sh |   27 ++++++++++++++++++---------\n 1 files changed, 18 insertions(+), 9 deletions(-)\n\ndiff --git a/tg-export.sh b/tg-export.sh\nindex 9e6940f..dea24d9 100644\n--- a/tg-export.sh\n+++ b/tg-export.sh\n@@ -71,14 +71,11 @@ pretty_tree()\n \t git write-tree)\n }\n \n-# collapsed_commit NAME\n-# Produce a collapsed commit of branch NAME.\n-collapsed_commit()\n+create_tg_commit()\n {\n \tname=\"$1\"\n-\n-\trm -f \"$playground/^pre\" \"$playground/^post\"\n-\t>\"$playground/^body\"\n+\ttree=\"$2\"\n+\tparent=\"$3\"\n \n \t# Get commit message and authorship information\n \tgit cat-file blob \"$name:.topmsg\" | git mailinfo \"$playground/^msg\" /dev/null > \"$playground/^info\"\n@@ -92,6 +89,20 @@ collapsed_commit()\n \ttest -n \"$GIT_AUTHOR_EMAIL\" && export GIT_AUTHOR_EMAIL\n \ttest -n \"$GIT_AUTHOR_DATE\" && export GIT_AUTHOR_DATE\n \n+\t(printf '%s\\n\\n' \"$SUBJECT\"; cat \"$playground/^msg\") |\n+\tgit stripspace |\n+\tgit commit-tree \"$tree\" -p \"$parent\"\n+}\n+\n+# collapsed_commit NAME\n+# Produce a collapsed commit of branch NAME.\n+collapsed_commit()\n+{\n+\tname=\"$1\"\n+\n+\trm -f \"$playground/^pre\" \"$playground/^post\"\n+\t>\"$playground/^body\"\n+\n \t# Determine parent\n \tparent=\"$(cut -f 1 \"$playground/$name^parents\")\"\n \tif [ \"$(cat \"$playground/$name^parents\" | wc -l)\" -gt 1 ]; then\n@@ -107,9 +118,7 @@ collapsed_commit()\n \tif branch_empty \"$name\"; then\n \t\techo \"$parent\";\n \telse\n-\t\t(printf '%s\\n\\n' \"$SUBJECT\"; cat \"$playground/^msg\") |\n-\t\tgit stripspace |\n-\t\tgit commit-tree \"$(pretty_tree \"$name\")\" -p \"$parent\"\n+\t\tcreate_tg_commit \"$name\" \"$(pretty_tree $name)\" \"$parent\"\n \tfi;\n \n \techo \"$name\" >>\"$playground/^ticker\"\n-- \n1.5.6.5\n"},{"id":"106250","messageId":"1235592240-12616-5-git-send-email-u.kleine-koenig@pengutronix.de","threadId":"18020","inReplyTo":"1235592240-12616-4-git-send-email-u.kleine-koenig@pengutronix.de","subject":"[PATCH] [TOPGIT] implement linearize export method","fromName":"Uwe Kleine-König","fromEmail":"u.kleine-koenig@pengutronix.de","sentAt":"2009-02-25T20:04:00Z","receivedAt":"2009-02-25T20:04:00Z","isPatch":true,"sender":{"key":"u.kleine-koenig@pengutronix.de","avatar":"https://gravatar.com/avatar/354b5e3ceb2806a2f1e1e382ac29ddbdad18288654da62b61eb13583a857eee7?d=mp&s=160"},"body":"This is a draft that seems to work for my test case.  The error handling\nis to be improved though.\n\nSigned-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>\n---\n tg-export.sh |   67 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-\n 1 files changed, 65 insertions(+), 2 deletions(-)\n\ndiff --git a/tg-export.sh b/tg-export.sh\nindex dea24d9..748ca54 100644\n--- a/tg-export.sh\n+++ b/tg-export.sh\n@@ -27,8 +27,10 @@ while [ -n \"$1\" ]; do\n \t\tdriver=quilt;;\n \t--collapse)\n \t\tdriver=collapse;;\n+\t--linearize)\n+\t\tdriver=linearize;;\n \t-*)\n-\t\techo \"Usage: tg [...] export ([--collapse] NEWBRANCH | [-b BRANCH1,BRANCH2...] --quilt DIRECTORY)\" >&2\n+\t\techo \"Usage: tg [...] export ([--collapse] NEWBRANCH | [-b BRANCH1,BRANCH2...] --quilt DIRECTORY | --linearize NEWBRANCH)\" >&2\n \t\texit 1;;\n \t*)\n \t\t[ -z \"$output\" ] || die \"output already specified ($output)\"\n@@ -195,10 +197,60 @@ quilt()\n \tfi\n }\n \n+linearize()\n+{\n+\tif test ! -f \"$playground/^BASE\"; then\n+\t\thead=\"$(git rev-parse --verify \"$_dep\")\"\n+\t\techo \"$head\" > \"$playground/^BASE\"\n+\t\tgit checkout -q \"$head\"\n+\t\treturn;\n+\tfi;\n+\n+\thead=$(git rev-parse --verify HEAD)\n+\n+\tif [ -z \"$_dep_is_tgish\" ]; then\n+\t\t# merge in $_dep unless already included\n+\t\trev=\"$(git rev-parse --verify \"$_dep\")\";\n+\t\tcommon=\"$(git merge-base --all HEAD \"$_dep\")\";\n+\t\tif test \"$rev\" = \"$common\"; then\n+\t\t\t# already included, just skip\n+\t\t\t:;\n+\t\telse\n+\t\t\tgit merge -s recursive \"$_dep\";\n+\t\t\tretmerge=\"$?\";\n+\t\t\tif test \"x$retmerge\" != \"x0\"; then\n+\t\t\t\techo fix up the merge, commit and then exit;\n+\t\t\t\t#todo error handling\n+\t\t\t\tsh -i\n+\t\t\tfi;\n+\t\tfi;\n+\telse\n+\t\tgit merge-recursive \"$(pretty_tree \"refs/top-bases/$_dep\")\" -- HEAD \"$(pretty_tree \"refs/heads/$_dep\")\";\n+\t\tretmerge=\"$?\";\n+\n+\t\tif test \"x$retmerge\" != \"x0\"; then\n+\t\t\techo \"fix up the merge and update the index.  Don't commit!\"\n+\t\t\t#todo error handling\n+\t\t\tsh -i\n+\t\tfi\n+\n+\t\tresult_tree=$(git write-tree)\n+\t\t# testing branch_empty might not always give the right answer.\n+\t\t# It can happen that the patch is non-empty but still after\n+\t\t# linearizing there is no change.  So compare the trees.\n+\t\tif test \"x$result_tree\" = \"x$(git rev-parse $head^{tree})\"; then\n+\t\t\techo \"skip empty commit $_dep\";\n+\t\telse\n+\t\t\tnewcommit=$(create_tg_commit \"$_dep\" \"$result_tree\" HEAD)\n+\t\t\tgit update-ref HEAD $newcommit $head\n+\t\t\techo \"exported commit $_dep\";\n+\t\tfi\n+\tfi\n+}\n \n ## Machinery\n \n-if [ \"$driver\" = \"collapse\" ]; then\n+if [ \"$driver\" = \"collapse\" ] || [ \"$driver\" = \"linearize\" ]; then\n \t[ -n \"$output\" ] ||\n \t\tdie \"no target branch specified\"\n \t! ref_exists \"$output\"  ||\n@@ -247,6 +299,17 @@ if [ \"$driver\" = \"collapse\" ]; then\n elif [ \"$driver\" = \"quilt\" ]; then\n \tdepcount=\"$(cat \"$output/series\" | wc -l)\"\n \techo \"Exported topic branch $name (total $depcount topics) to directory $output\"\n+\n+elif [ \"$driver\" = \"linearize\" ]; then\n+\tgit checkout -q -b $output\n+\n+\techo $name\n+\tif test $(git rev-parse \"$(pretty_tree $name)^{tree}\") != $(git rev-parse \"HEAD^{tree}\"); then\n+\t\techo \"Warning: Exported result doesn't match\";\n+\t\techo \"tg-head=$(git rev-parse \"$name\"), exported=$(git rev-parse \"HEAD\")\";\n+\t\t#git diff $head HEAD;\n+\tfi;\n+\n fi\n \n # vim:noet\n-- \n1.5.6.5\n"},{"id":"106258","messageId":"20090225212309.GM12275@machine.or.cz","threadId":"18020","inReplyTo":"20090225195856.GA12372@pengutronix.de","subject":"Re: topgit patches","fromName":"Petr Baudis","fromEmail":"pasky@suse.cz","sentAt":"2009-02-25T21:23:09Z","receivedAt":"2009-02-25T21:23:09Z","isPatch":false,"sender":{"key":"pasky@ucw.cz","avatar":"https://avatars.githubusercontent.com/u/18439?v=4"},"body":"  Hi,\n\nOn Wed, Feb 25, 2009 at 08:58:56PM +0100, Uwe Kleine-König wrote:\n> The following changes since commit 8c77c342166ddc6ecb3840628d89ddc5bb6b043b:\n>   Kirill Smelkov (1):\n>         tg-completion: complete options for `tg remote`\n> \n> are available in the git repository at:\n> \n>   git://git.pengutronix.de/git/ukl/topgit.git pu\n> \n> Uwe Kleine-König (5):\n>       [TOPGIT] limit rev-list in branch_contains to a single rev\n>       [TOPGIT] allow working with annihilated branches\n>       [TOPGIT] make tg remote idempotent\n>       [TOPGIT] make creating a commit from a topgit branch a function\n>       [TOPGIT] implement linearize export method\n> \n>  tg-export.sh  |   94 ++++++++++++++++++++++++++++++++++++++++++++++++++-------\n>  tg-remote.sh  |    6 ++--\n>  tg-summary.sh |   11 ++++++-\n>  tg.sh         |   19 ++++++++++-\n>  4 files changed, 113 insertions(+), 17 deletions(-)\n> \n> I consider the first three as ready to pull (they form my master branch\n> at the repo above).  The fourth commit is just preparing the fifth.  The\n> fifth commit implements a new export method that I use often.  The error\n> handling isn't well tested, just because I don't usually run into merge\n> conflicts in my series :-)\n> \n> I look forward to comments, especially for the last commit.\n> \n> For review purposes I send the patches as a reply to this mail.\n\n  I'm unfortunately not actively using topgit right now and I have no\ntime to maintain it or review patches. :-( Martin seems to be in similar\nsituation. So, would you like push access to the main repository? ;-)\n\n-- \n\t\t\t\tPetr \"Pasky\" Baudis\nThe average, healthy, well-adjusted adult gets up at seven-thirty\nin the morning feeling just terrible. -- Jean Kerr\n"},{"id":"106273","messageId":"20090225231550.GA19741@pengutronix.de","threadId":"18020","inReplyTo":"20090225212309.GM12275@machine.or.cz","subject":"Re: topgit patches","fromName":"Uwe Kleine-König","fromEmail":"u.kleine-koenig@pengutronix.de","sentAt":"2009-02-25T23:15:50Z","receivedAt":"2009-02-25T23:15:50Z","isPatch":false,"sender":{"key":"u.kleine-koenig@pengutronix.de","avatar":"https://gravatar.com/avatar/354b5e3ceb2806a2f1e1e382ac29ddbdad18288654da62b61eb13583a857eee7?d=mp&s=160"},"body":"Hi Petr,\n\nOn Wed, Feb 25, 2009 at 10:23:09PM +0100, Petr Baudis wrote:\n> On Wed, Feb 25, 2009 at 08:58:56PM +0100, Uwe Kleine-König wrote:\n> > The following changes since commit 8c77c342166ddc6ecb3840628d89ddc5bb6b043b:\n> >   Kirill Smelkov (1):\n> >         tg-completion: complete options for `tg remote`\n> > \n> > are available in the git repository at:\n> > \n> >   git://git.pengutronix.de/git/ukl/topgit.git pu\n> > \n> > Uwe Kleine-König (5):\n> >       [TOPGIT] limit rev-list in branch_contains to a single rev\n> >       [TOPGIT] allow working with annihilated branches\n> >       [TOPGIT] make tg remote idempotent\n> >       [TOPGIT] make creating a commit from a topgit branch a function\n> >       [TOPGIT] implement linearize export method\n> > \n>   I'm unfortunately not actively using topgit right now and I have no\n> time to maintain it or review patches. :-( Martin seems to be in similar\n> situation. So, would you like push access to the main repository? ;-)\nWell, I already wondered if there is someone using topgit apart from me.\n:-)\n\nIf you give me push access I'd only push the first three patches to\nmaster and maybe create a pu branch for the linearize method.\n\nGiven this situation it probably doesn't make sense to describe some\nproblems I currently see using topgit :-|.\n\nBest regards\nUwe\n\n-- \nPengutronix e.K.                              | Uwe Kleine-König            |\nIndustrial Linux Solutions                    | http://www.pengutronix.de/  |\nPeiner Strasse 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |\nAmtsgericht Hildesheim, HRA 2686              | Fax:   +49-5121-206917-5555 |\n"},{"id":"106274","messageId":"20090225232237.GO12275@machine.or.cz","threadId":"18020","inReplyTo":"20090225231550.GA19741@pengutronix.de","subject":"Re: topgit patches","fromName":"Petr Baudis","fromEmail":"pasky@suse.cz","sentAt":"2009-02-25T23:22:37Z","receivedAt":"2009-02-25T23:22:37Z","isPatch":false,"sender":{"key":"pasky@ucw.cz","avatar":"https://avatars.githubusercontent.com/u/18439?v=4"},"body":"  Hi,\n\nOn Thu, Feb 26, 2009 at 12:15:50AM +0100, Uwe Kleine-König wrote:\n> On Wed, Feb 25, 2009 at 10:23:09PM +0100, Petr Baudis wrote:\n> >   I'm unfortunately not actively using topgit right now and I have no\n> > time to maintain it or review patches. :-( Martin seems to be in similar\n> > situation. So, would you like push access to the main repository? ;-)\n> Well, I already wondered if there is someone using topgit apart from me.\n> :-)\n\n  hehe, i think there are still quite a few people, though the initial\nsurge of interest fell a bit, understandably.\n\n> If you give me push access I'd only push the first three patches to\n> master and maybe create a pu branch for the linearize method.\n\n  I wouldn't be so conservative, IMHO it's better to liberally test new\nfeatures rather than let them bitrot, in such a small project, but of\ncourse it's up to you.\n\n  What's your repo.or.cz username?\n\n-- \n\t\t\t\tPetr \"Pasky\" Baudis\nThe average, healthy, well-adjusted adult gets up at seven-thirty\nin the morning feeling just terrible. -- Jean Kerr\n"},{"id":"106296","messageId":"20090226060652.GA16251@lapse.rw.madduck.net","threadId":"18020","inReplyTo":"20090225231550.GA19741@pengutronix.de","subject":"Re: topgit patches","fromName":"martin f krafft","fromEmail":"madduck@debian.org","sentAt":"2009-02-26T06:06:52Z","receivedAt":"2009-02-26T06:06:52Z","isPatch":false,"sender":{"key":"madduck@debian.org","avatar":null},"body":"also sprach Uwe Kleine-König <u.kleine-koenig@pengutronix.de> [2009.02.26.0015 +0100]:\n> Well, I already wondered if there is someone using topgit apart\n> from me. :-)\n\nI use it and would like to actively maintain it, but time is short\nand I wanted to push out a new option parser with 0.6, but it's just\nnot finished yet. As soon as I find a few hours, I'll try to revisit\nit. But if someone else has the time, maybe we can prepare a 0.6\nwithout a new option parser?\n\n> Given this situation it probably doesn't make sense to describe\n> some problems I currently see using topgit :-|.\n\nPlease do, I am interested.\n\n-- \n .''`.   martin f. krafft <madduck@d.o>      Related projects:\n: :'  :  proud Debian developer               http://debiansystem.info\n`. `'`   http://people.debian.org/~madduck    http://vcs-pkg.org\n  `-  Debian - when you have better things to do than fixing systems\n \n\"auch der mutigste von uns hat nur selten den mut zu dem,\n was er eigentlich weiß.\"\n                                                 - friedrich nietzsche\n"},{"id":"106324","messageId":"20090226134705.GB7110@pengutronix.de","threadId":"18020","inReplyTo":"20090225232237.GO12275@machine.or.cz","subject":"Re: topgit patches","fromName":"Uwe Kleine-König","fromEmail":"u.kleine-koenig@pengutronix.de","sentAt":"2009-02-26T13:47:05Z","receivedAt":"2009-02-26T13:47:05Z","isPatch":false,"sender":{"key":"u.kleine-koenig@pengutronix.de","avatar":"https://gravatar.com/avatar/354b5e3ceb2806a2f1e1e382ac29ddbdad18288654da62b61eb13583a857eee7?d=mp&s=160"},"body":"Hi Petr,\n\nOn Thu, Feb 26, 2009 at 12:22:37AM +0100, Petr Baudis wrote:\n> > If you give me push access I'd only push the first three patches to\n> > master and maybe create a pu branch for the linearize method.\n> \n>   I wouldn't be so conservative, IMHO it's better to liberally test new\n> features rather than let them bitrot, in such a small project, but of\n> course it's up to you.\nOK, that's fine for me, too.  This way it might at least get a few more\nusers. :)\n \n>   What's your repo.or.cz username?\nukleinek\n\nBest regards\nUwe\n\n-- \nPengutronix e.K.                              | Uwe Kleine-König            |\nIndustrial Linux Solutions                    | http://www.pengutronix.de/  |\n"},{"id":"106326","messageId":"20090226141548.GA32439@pengutronix.de","threadId":"18020","inReplyTo":"20090226060652.GA16251@lapse.rw.madduck.net","subject":"Re: topgit patches","fromName":"Uwe Kleine-König","fromEmail":"u.kleine-koenig@pengutronix.de","sentAt":"2009-02-26T14:15:48Z","receivedAt":"2009-02-26T14:15:48Z","isPatch":false,"sender":{"key":"u.kleine-koenig@pengutronix.de","avatar":"https://gravatar.com/avatar/354b5e3ceb2806a2f1e1e382ac29ddbdad18288654da62b61eb13583a857eee7?d=mp&s=160"},"body":"Hi Martin,\n\nOn Thu, Feb 26, 2009 at 07:06:52AM +0100, martin f krafft wrote:\n> also sprach Uwe Kleine-König <u.kleine-koenig@pengutronix.de> [2009.02.26.0015 +0100]:\n> > Well, I already wondered if there is someone using topgit apart\n> > from me. :-)\n> \n> I use it and would like to actively maintain it, but time is short\n> and I wanted to push out a new option parser with 0.6, but it's just\n> not finished yet. As soon as I find a few hours, I'll try to revisit\n> it. But if someone else has the time, maybe we can prepare a 0.6\n> without a new option parser?\nIf you need help, I'm also interested to co-maintain the debian package.\nJust an offer ...  (I don't know the exact way to become a maintainer,\nif I need to meet a Debian developer, that's no problem, I know one.)\n \n> > Given this situation it probably doesn't make sense to describe\n> > some problems I currently see using topgit :-|.\n> \n> Please do, I am interested.\nSometimes I get an error about being unable to delete a temp file, will\ntry to track that down when it happens next.\n\nHaving many topgit controlled patches it's hard to get the overview.\nUpdating patches with many interdependencies is hard and doing a merge\nwrong is hard to detect and fix.  I don't have a good idea for that yet,\nbut I will investigate some thought here.\n\nFurther ideas and plans of mine in no particular order:\n 1 move all or most topgit-topic-branches to a private namespace, say\n   refs/top-heads because the patch branches pollute the output of git\n   branch.\n\n 2 export method that works like the existing linearize but creates\n   branches for topgit branches living in refs/heads and merges these\n   properly without linearisation.\n   (obviously depends on 1)\n\n 3 address topgit bugs on bugs.debian.org\n\n 4 factor out some code to helper functions in tg.sh\n\n 5 convice my colleagues that topgit is the right tool to gain world\n   domination :)\n\n 6 I'm sure I will find some more while doing 1 to 5. :)\n\nBest regards\nUwe\n\n-- \nPengutronix e.K.                              | Uwe Kleine-König            |\nIndustrial Linux Solutions                    | http://www.pengutronix.de/  |\n"},{"id":"106429","messageId":"20090227123731.GA22696@piper.oerlikon.madduck.net","threadId":"18020","inReplyTo":"20090226141548.GA32439@pengutronix.de","subject":"Re: topgit patches","fromName":"martin f krafft","fromEmail":"madduck@debian.org","sentAt":"2009-02-27T12:37:31Z","receivedAt":"2009-02-27T12:37:31Z","isPatch":false,"sender":{"key":"madduck@debian.org","avatar":null},"body":"also sprach Uwe Kleine-König <u.kleine-koenig@pengutronix.de> [2009.02.26.1515 +0100]:\n> If you need help, I'm also interested to co-maintain the debian\n> package. Just an offer ...  (I don't know the exact way to become\n> a maintainer, if I need to meet a Debian developer, that's no\n> problem, I know one.)\n\nThe Debian package is pretty trivial to maintain on top of upstream\n(thanks to topgit), and I am using it a bit as a test-case for\nworkflow experiments. However, if you are interested in packaging,\nby all means, join me. In that case I'd suggest that you make the\n0.6-1 Debian package after 0.6 is out, and I give you some hints up\nfront and then simply stand by to help out.\n\n>  1 move all or most topgit-topic-branches to a private namespace, say\n>    refs/top-heads because the patch branches pollute the output of git\n>    branch.\n\nBut aren't the topic branches essentially also plain Git branches?\n\n>  2 export method that works like the existing linearize but creates\n>    branches for topgit branches living in refs/heads and merges these\n>    properly without linearisation.\n>    (obviously depends on 1)\n\nI am not sure I understand what you are trying to do.\n\n>  3 address topgit bugs on bugs.debian.org\n\nAwesome. I will try to be available for any support you might need.\nI just can't come up with a sufficiently long stretch of time to see\nthrough the next release right now.\n\nCheers,\n\n-- \n .''`.   martin f. krafft <madduck@d.o>      Related projects:\n: :'  :  proud Debian developer               http://debiansystem.info\n`. `'`   http://people.debian.org/~madduck    http://vcs-pkg.org\n  `-  Debian - when you have better things to do than fixing systems\n \nubuntu is an ancient african word meaning \"i can't install debian.\"\n                                                          -- unknown\n"},{"id":"106465","messageId":"20090227194252.GB24054@pengutronix.de","threadId":"18020","inReplyTo":"20090227123731.GA22696@piper.oerlikon.madduck.net","subject":"Re: topgit patches","fromName":"Uwe Kleine-König","fromEmail":"u.kleine-koenig@pengutronix.de","sentAt":"2009-02-27T19:42:52Z","receivedAt":"2009-02-27T19:42:52Z","isPatch":false,"sender":{"key":"u.kleine-koenig@pengutronix.de","avatar":"https://gravatar.com/avatar/354b5e3ceb2806a2f1e1e382ac29ddbdad18288654da62b61eb13583a857eee7?d=mp&s=160"},"body":"On Fri, Feb 27, 2009 at 01:37:31PM +0100, martin f krafft wrote:\n> also sprach Uwe Kleine-König <u.kleine-koenig@pengutronix.de> [2009.02.26.1515 +0100]:\n> > If you need help, I'm also interested to co-maintain the debian\n> > package. Just an offer ...  (I don't know the exact way to become\n> > a maintainer, if I need to meet a Debian developer, that's no\n> > problem, I know one.)\n> \n> The Debian package is pretty trivial to maintain on top of upstream\n> (thanks to topgit), and I am using it a bit as a test-case for\n> workflow experiments. However, if you are interested in packaging,\n> by all means, join me. In that case I'd suggest that you make the\n> 0.6-1 Debian package after 0.6 is out, and I give you some hints up\n> front and then simply stand by to help out.\nGreat.\n\n> >  1 move all or most topgit-topic-branches to a private namespace, say\n> >    refs/top-heads because the patch branches pollute the output of git\n> >    branch.\n> \n> But aren't the topic branches essentially also plain Git branches?\nYes, sure, but in my workflow I usually have \"patch branches\" that\nreally introduce a change and \"topic branches\" that don't introduce own\nchanges but only collect \"patch branches\" in .topdeps.  For me it would\nbe enough to let the \"topic branches\" appear in the output of\ngit-branch.  Currently I have 144 (non-remote) branches in my linux\nrepo:\n\n\t-   3 branches are exported topgit developments;\n\t-   1 master branch (don't know off-hand what it contains);\n\t-   9 topgit topic branches; and\n\t- 131 topgit patch branches.\n\nSkipping the 131 patch branches would greatly improve usability.\n\n> >  2 export method that works like the existing linearize but creates\n> >    branches for topgit branches living in refs/heads and merges these\n> >    properly without linearisation.\n> >    (obviously depends on 1)\n> \n> I am not sure I understand what you are trying to do.\nFor example I collect arm-linux related patches that are ready for\nupstream in a branch called t/armmisc-master, and patches that are not\nready in t/armmisc-pu.  t/armmisc-pu depends on t/armmisc-master.  When\nI export t/armmisc-pu (usually to armmisc-pu) I want that a branch\narmmisc-master is created that is an ancestor of armmisc-pu that just\ncontains the patches in t/armmisc-master.\n\nAnother scenario is if I'm working on a platform, say imx, I have\nseveral upstreams: arm, i2c, mtd etc.  Here I want to have a topic\nbranch that contains all my imx patches and provides proper branches to\npull for my upstreams.  So the involved topgit topic branches are named:\n\n\tt/imx-master\n\tt/imx/arm-master\n\tt/imx/i2c-master\n\tt/imx/mtd-master\n\nand the exported result has to look like this:\n\n\t                 arm-patch1 -- arm-patch2 ... arm-patchK\n\t               /                                        \\\n\t              /                                          \\\n\tlinus/master  -- i2c-patch1 -- i2c-patch2 ... i2c-patchL-- imx-master\n\t              \\                                          /\n\t               \\                                        /\n\t                 mtc-patch1 -- mtd-patch2 ... mtd-patchM\n\nand arm-patchK, i2c-patchL and mtd-patchM are the heads of the branches\nimx/arm-master, imx/i2c-master and imx/mtd-master respectively.\n\nBest regards\nUwe\n\n-- \nPengutronix e.K.                              | Uwe Kleine-König            |\nIndustrial Linux Solutions                    | http://www.pengutronix.de/  |\n"},{"id":"106707","messageId":"20090302162641.GB15229@pengutronix.de","threadId":"18020","inReplyTo":"20090226060652.GA16251@lapse.rw.madduck.net","subject":"Re: topgit patches","fromName":"Uwe Kleine-König","fromEmail":"u.kleine-koenig@pengutronix.de","sentAt":"2009-03-02T16:26:41Z","receivedAt":"2009-03-02T16:26:41Z","isPatch":false,"sender":{"key":"u.kleine-koenig@pengutronix.de","avatar":"https://gravatar.com/avatar/354b5e3ceb2806a2f1e1e382ac29ddbdad18288654da62b61eb13583a857eee7?d=mp&s=160"},"body":"Hello,\n\nOn Thu, Feb 26, 2009 at 07:06:52AM +0100, martin f krafft wrote:\n> also sprach Uwe Kleine-König <u.kleine-koenig@pengutronix.de> [2009.02.26.0015 +0100]:\n> > Well, I already wondered if there is someone using topgit apart\n> > from me. :-)\n> \n> I use it and would like to actively maintain it, but time is short\n> and I wanted to push out a new option parser with 0.6, but it's just\n> not finished yet. As soon as I find a few hours, I'll try to revisit\n> it. But if someone else has the time, maybe we can prepare a 0.6\n> without a new option parser?\nI assume you planned to use git rev-parse --parseopt?\n\nSince topgit-0.5 we have some fixes, a new export method and improved\nbash completion.  Just repackaging the current state into a new Debian\npackage closes 4 bugs in the Debian BTS.\n\nBefore 0.6 I still need to write some documentation for the new export\nmethod, but after that I consider releasing the then current state as\n0.6 is a good idea.\n\nmartin, Petr, others: any comments?  Should I just tag if I feel ready?\n\nmartin: I can try to prepare the Debian package, AFAIK I cannot upload\nit, so here I need your help.  (And maybe you should check the package,\nbecause up to now I only created Debian packages for my private use.)\n\nBest regards\nUwe\n\n-- \nPengutronix e.K.                              | Uwe Kleine-König            |\nIndustrial Linux Solutions                    | http://www.pengutronix.de/  |\nPeiner Strasse 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |\nAmtsgericht Hildesheim, HRA 2686              | Fax:   +49-5121-206917-5555 |\n"},{"id":"106779","messageId":"20090303075423.GA29920@piper.oerlikon.madduck.net","threadId":"18020","inReplyTo":"20090302162641.GB15229@pengutronix.de","subject":"Re: topgit patches","fromName":"martin f krafft","fromEmail":"madduck@debian.org","sentAt":"2009-03-03T07:54:23Z","receivedAt":"2009-03-03T07:54:23Z","isPatch":false,"sender":{"key":"madduck@debian.org","avatar":null},"body":"also sprach Uwe Kleine-König <u.kleine-koenig@pengutronix.de> [2009.03.02.1726 +0100]:\n> > it. But if someone else has the time, maybe we can prepare a 0.6\n> > without a new option parser?\n> I assume you planned to use git rev-parse --parseopt?\n\nYes.\n\n> Since topgit-0.5 we have some fixes, a new export method and improved\n> bash completion.  Just repackaging the current state into a new Debian\n> package closes 4 bugs in the Debian BTS.\n> \n> Before 0.6 I still need to write some documentation for the new export\n> method, but after that I consider releasing the then current state as\n> 0.6 is a good idea.\n> \n> martin, Petr, others: any comments?  Should I just tag if I feel ready?\n\nSounds good to me, even without parseopt. Thanks Uwe for stepping in\nto help us!\n\n> martin: I can try to prepare the Debian package, AFAIK I cannot\n> upload it, so here I need your help.  (And maybe you should check\n> the package, because up to now I only created Debian packages for\n> my private use.)\n\nPossibly the easiest way to do this is http://mentors.debian.net, so\nif that's okay with you, send me the URL to the uploaded .dsc file\nand I will look at it and get back to you. If you don't want to\nbother creating the source package, just let me know which commit ID\nto build (don't tag debian/* until after the upload).\n\n-- \n .''`.   martin f. krafft <madduck@d.o>      Related projects:\n: :'  :  proud Debian developer               http://debiansystem.info\n`. `'`   http://people.debian.org/~madduck    http://vcs-pkg.org\n  `-  Debian - when you have better things to do than fixing systems\n \n\"if you are going to run a rinky-dink distro made by a couple of\n volunteers, why not run a rinky-dink distro made by a lot of\n volunteers?\"\n                                                    -- jaldhar h. vyas\n"}]}