From: Ira Weiny Date: Thu, 09 Apr 2009 18:18:38 GMT Subject: Re: [PATCH] Add "list" and "rm" sub commands to tg-depend Message-ID: <20090409111838.c79d532f.weiny2@llnl.gov> In-Reply-To: <36ca99e90904091034m4d4d31dct78acb333612e678@mail.gmail.com> On Thu, 9 Apr 2009 19:34:06 +0200 Bert Wesarg wrote: > 2009/4/9 Uwe Kleine-König : > > Hello Ira, > > > > On Wed, Apr 08, 2009 at 09:19:49AM -0700, Ira Weiny wrote: > >> On Wed, 8 Apr 2009 10:39:55 +0200 > >> Uwe Kleine-König wrote: > >> [snip] > >> > > > +       mv $TMPFILE $root_dir/.topdeps > >> > > > +else > >> > > > +       echo "$name" >>"$root_dir/.topdeps" > >> > > > +fi > >> > > > + > >> > > > +## commit it and update this branch > >> > > >  git add -f "$root_dir/.topdeps" > >> > > >  git commit -m"New TopGit dependency: $name" > >> > > >  $tg update > >> > > > -- > >> > > > 1.5.4.5 > >> > I don't think the patch is correct.  Just removing a branch from > >> > .topdeps is not enough. > >> > > >> > Did you try to export the tg-branch?  The result will be that the patch > >> > for that you deleted the dependency has the deleted change folded in. > >> > >> Indeed you are correct.  It was working for me because I was moving a node > >> from one place to another.  But the new location was still an ancestor of the > >> dependency which was removed.  I still think this can be automated but I will > >> have to work on it. > > So you mean that rm should only work if the patch is still a dependency? > > > > You might want to check > > > >        http:// thread.gmane.org/gmane.comp.version-control.git/114581 > > > > before investing time to implement it.  (I cc:d Bert Wesarg.)  If you > > had posted to git@vger.kernel.org Bert might have seen your mail alone. > > (hint hint) > Uwe, > > thanks for the Cc. > > I really can't reconstruct this thread, could some one send me the > original patch. I have attached the original patch (cleaned up with Uwe's original comments). NOTE: this will not work but I am just sending it to help reconstruct the thread. I think to do this properly you would have to either A) create a new branch without the topic specified B) work your way back through the dependencies and reverse patch all those nodes which do not have a common ancestor with any of your other dependencies. As an aside I found that topgit does not like you removing the only dependency left. I was unable to get that to work at all. I don't know why. I believe you specified option A in a message after this one, correct? Ira > > My interest is this, that I implemented a tg-prev > (lists all deps from given topic), tg-next (lists topics depending on > the given topic), and a tg-tsort (which gives a topological list of > dependencies, which is a little outdated after the --graphviz option) > > The original message seems lost in the archive, the comments are still there: > > http:// thread.gmane.org/gmane.comp.version-control.git/96483 > > I can send an update on this. > > I think the first two commands could be added as sub-commands to > tg-depend, with bash completion you don't need to type that much > nowadays. > > As I said to tg-tsort, its probably outdated because of the graphviz > output, but may still provide valid information. Btw. does anyone > know a console output driver for the graphviz tools, i.e. dot and co? > > Bert > > > > > Best regards > > Uwe > > PS: Finally added git list to Cc: > -- Ira Weiny Math Programmer/Computer Scientist Lawrence Livermore National Lab weiny2@llnl.gov From 3a424a1887a815ca742ef4bacec09b245658b1b7 Mon Sep 17 00:00:00 2001 From: Ira Weiny Date: Tue, 7 Apr 2009 13:03:48 -0700 Subject: [PATCH] Add "list" and "rm" sub commands to tg-depend Signed-off-by: Ira Weiny --- README | 16 +++++++++++++--- tg-depend.sh | 27 +++++++++++++++++++++++++-- 2 files changed, 38 insertions(+), 5 deletions(-) diff --git a/README b/README index d2f095d..8b4356d 100644 --- a/README +++ b/README @@ -256,8 +256,13 @@ tg delete tg depend ~~~~~~~~~ Change dependencies of a TopGit-controlled topic branch. - This should have several subcommands, but only 'add' is - supported right now. + This command has the subcommands: + 'list' <== Default (run when no subcommand is given) + 'add' + 'rm' + + 'list' lists the topic branches on which the current topic branch + depends. The 'add' subcommand takes an argument of a topic branch to be added, adds it to '.topdeps', performs a commit and @@ -266,7 +271,12 @@ tg depend adjusting '.topmsg', prepare them in the index before calling 'tg depend add'. - TODO: Subcommand for removing dependencies, obviously + The 'rm' subcommand takes an argument of a topic branch + to be removed, removes it from '.topdeps', performs a commit and + then updates your topic branch accordingly. If you want to + do other things related to the dependency addition, like + adjusting '.topmsg', prepare them in the index before + calling 'tg depend rm'. tg info ~~~~~~~ diff --git a/tg-depend.sh b/tg-depend.sh index ef5f94f..6a4bc85 100644 --- a/tg-depend.sh +++ b/tg-depend.sh @@ -4,16 +4,25 @@ # GPLv2 name= +mode= ## Parse options subcmd="$1"; shift || : case "$subcmd" in - -h|"") + -h) echo "Usage: tg [...] depend add NAME" >&2 exit 1;; add) + mode="add" + ;; + ""|list) + cat $root_dir/.topdeps + exit 0 + ;; + rm) + mode="rm" ;; *) die "unknown subcommand ($subcmd)";; @@ -43,7 +52,21 @@ baserev="$(git rev-parse --verify "refs/top-bases/$name" 2>/dev/null)" || ## Record new dependency -echo "$name" >>"$root_dir/.topdeps" +if [ "$mode" = "rm" ]; then + grep $name $root_dir/.topdeps > /dev/null + if [ "$?" != "0" ]; then + echo "Failed to find $name in dependency list" + exit 1 + fi + TMPFILE=`mktemp` || exit 1 + echo $TMPFILE + grep -v $name $root_dir/.topdeps > $TMPFILE + mv $TMPFILE $root_dir/.topdeps +else + echo "$name" >>"$root_dir/.topdeps" +fi + +## commit it and update this branch git add -f "$root_dir/.topdeps" git commit -m"New TopGit dependency: $name" $tg update -- 1.5.4.5