aboutsummaryrefslogtreecommitdiffstats
path: root/becommands/merge.py
diff options
context:
space:
mode:
Diffstat (limited to 'becommands/merge.py')
-rw-r--r--becommands/merge.py165
1 files changed, 0 insertions, 165 deletions
diff --git a/becommands/merge.py b/becommands/merge.py
deleted file mode 100644
index f212b01..0000000
--- a/becommands/merge.py
+++ /dev/null
@@ -1,165 +0,0 @@
-# Copyright (C) 2008-2009 W. Trevor King <wking@drexel.edu>
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-"""Merge duplicate bugs"""
-from libbe import cmdutil, bugdir
-import os, copy
-__desc__ = __doc__
-
-def execute(args, manipulate_encodings=True):
- """
- >>> from libbe import utility
- >>> bd = bugdir.SimpleBugDir()
- >>> bd.set_sync_with_disk(True)
- >>> a = bd.bug_from_shortname("a")
- >>> a.comment_root.time = 0
- >>> dummy = a.new_comment("Testing")
- >>> dummy.time = 1
- >>> dummy = dummy.new_reply("Testing...")
- >>> dummy.time = 2
- >>> b = bd.bug_from_shortname("b")
- >>> b.status = "open"
- >>> b.comment_root.time = 0
- >>> dummy = b.new_comment("1 2")
- >>> dummy.time = 1
- >>> dummy = dummy.new_reply("1 2 3 4")
- >>> dummy.time = 2
- >>> os.chdir(bd.root)
- >>> execute(["a", "b"], manipulate_encodings=False)
- Merging bugs a and b
- >>> bd._clear_bugs()
- >>> a = bd.bug_from_shortname("a")
- >>> a.load_comments()
- >>> mergeA = a.comment_from_shortname(":3")
- >>> mergeA.time = 3
- >>> print a.string(show_comments=True) # doctest: +ELLIPSIS
- ID : a
- Short name : a
- Severity : minor
- Status : open
- Assigned :
- Target :
- Reporter :
- Creator : John Doe <jdoe@example.com>
- Created : ...
- Bug A
- --------- Comment ---------
- Name: a:1
- From: ...
- Date: ...
- <BLANKLINE>
- Testing
- --------- Comment ---------
- Name: a:2
- From: ...
- Date: ...
- <BLANKLINE>
- Testing...
- --------- Comment ---------
- Name: a:3
- From: ...
- Date: ...
- <BLANKLINE>
- Merged from bug b
- --------- Comment ---------
- Name: a:4
- From: ...
- Date: ...
- <BLANKLINE>
- 1 2
- --------- Comment ---------
- Name: a:5
- From: ...
- Date: ...
- <BLANKLINE>
- 1 2 3 4
- >>> b = bd.bug_from_shortname("b")
- >>> b.load_comments()
- >>> mergeB = b.comment_from_shortname(":3")
- >>> mergeB.time = 3
- >>> print b.string(show_comments=True) # doctest: +ELLIPSIS
- ID : b
- Short name : b
- Severity : minor
- Status : closed
- Assigned :
- Target :
- Reporter :
- Creator : Jane Doe <jdoe@example.com>
- Created : ...
- Bug B
- --------- Comment ---------
- Name: b:1
- From: ...
- Date: ...
- <BLANKLINE>
- 1 2
- --------- Comment ---------
- Name: b:2
- From: ...
- Date: ...
- <BLANKLINE>
- 1 2 3 4
- --------- Comment ---------
- Name: b:3
- From: ...
- Date: ...
- <BLANKLINE>
- Merged into bug a
- >>> print b.status
- closed
- >>> bd.cleanup()
- """
- parser = get_parser()
- options, args = parser.parse_args(args)
- cmdutil.default_complete(options, args, parser,
- bugid_args={0: lambda bug : bug.active==True,
- 1: lambda bug : bug.active==True})
-
- if len(args) < 2:
- raise cmdutil.UsageError("Please specify two bug ids.")
- if len(args) > 2:
- help()
- raise cmdutil.UsageError("Too many arguments.")
-
- bd = bugdir.BugDir(from_disk=True,
- manipulate_encodings=manipulate_encodings)
- bugA = cmdutil.bug_from_shortname(bd, args[0])
- bugA.load_comments()
- bugB = cmdutil.bug_from_shortname(bd, args[1])
- bugB.load_comments()
- mergeA = bugA.new_comment("Merged from bug %s" % bugB.uuid)
- newCommTree = copy.deepcopy(bugB.comment_root)
- for comment in newCommTree.traverse(): # all descendant comments
- comment.bug = bugA
- comment.save() # force onto disk under bugA
- for comment in newCommTree: # just the child comments
- mergeA.add_reply(comment, allow_time_inversion=True)
- bugB.new_comment("Merged into bug %s" % bugA.uuid)
- bugB.status = "closed"
- print "Merging bugs %s and %s" % (bugA.uuid, bugB.uuid)
-
-def get_parser():
- parser = cmdutil.CmdOptionParser("be merge BUG-ID BUG-ID")
- return parser
-
-longhelp="""
-The second bug (B) is merged into the first (A). This adds merge
-comments to both bugs, closes B, and appends B's comment tree to A's
-merge comment.
-"""
-
-def help():
- return get_parser().help_str() + longhelp