aboutsummaryrefslogtreecommitdiffstats
path: root/libbe/git.py
Commit message (Collapse)AuthorAgeFilesLines
* Added darcs support.W. Trevor King2009-06-301-1/+8
| | | | | | | | | | | | I don't know much darcs, so I make no claims about the beauty of my implementation. It seems to get the job done though, until a darcs guru comes along. I also tweaked the libbe.git.Git._rcs_get_user_id to handle the case where user.name or user.email are not set. I also added the option to pass a stdin string into the libbe.rcs.RCS._u_invoke* functions.
* Added ability to handle non text/* MIME types.W. Trevor King2009-06-261-2/+2
| | | | | | | | | | | | | | | | The main problem was the encoding/decoding that was happening to _all_ input/output. Now many I/O activities have a `binary' option to disable any encoding/decoding. The `binary' flag is set whenever the comment content-type is not a text/* type. In order to print valid XML (and make life easy on xml/be-xml-to-mbox), non text/* types are printed out as base64-encoded MIME messages, so be list --xml | be-xml-to-mbox | catmutt works as you'd expect. With the standard (non-XML) output from `be show', we just print a message telling the user that we can't reasonably display the MIME type and that they should use the XML output if they want to see it.
* Merge from Ben Finney's RCS unittest patchW. Trevor King2009-06-211-5/+8
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This involved an `upgrade' of BE's bzr repo Previous version (via `bzr info path/to/repo`): pack-0.92 Current version: rich-root-pack The whole rich-root thing is a bzr features-vs-backwards-compatability thing they've been wrestling with [1,2,3,4,...]. It seems that BE was in some sort of unstable equilibrium [5], so I'll follow Ben's lead and make the official switch. Note that you'll need to use bzr>=1.5 to make the shift [6]. For the sake of completeness, the whole rich-root thing was introduced here [7], but I don't understand enough of bzr to make sense of the diff. It just versions the repo's root directory the same way it versions other directories [3]. The bzr people seem to be planning to phase out non-rich-root formats in favor of brisbane-core, aka 2.0beta [8], by bzr 2.0 [8], which is apparently on the horizon [9,10,11]. What a headache. Citations are all titles/X-List-Received-Date from https://lists.ubuntu.com/archives/bazaar/ with the exception of the URL [11]. [1] [RFC] rich root pack as default in 1.8 ? Sat, 06 Sep 2008 03:33:46 -0000 (conclusion: none) [2] Re: 1.9rc1 countdown Thu, 30 Oct 2008 08:44:53 -0000 (conclusion: "primary" format should be rich-root next time we make a new format) [3] So many repo formats Fri, 14 Nov 2008 08:41:33 -0000 Mon, 17 Nov 2008 07:37:47 -0000 (explains rich-root format) Mon, 17 Nov 2008 22:37:39 -0000 (explains no-return policy) Mon, 17 Nov 2008 20:57:08 -0000 (explicitly lists non-svn reasons for rich-root) [4] Branch fails from 'pack-0.92' repo to 'rich-root-pack' repo. Wed, 27 Aug 2008 11:31:11 -0000 (we're not sure again) [5] Branch fails from 'pack-0.92' repo to 'rich-root-pack' repo. Sun, 20 Apr 2008 12:58:09 -0000 [6] Branch fails from 'pack-0.92' repo to 'rich-root-pack' repo. Fri, 29 Aug 2008 13:23:52 -0000 [7] [RFC] Knit format 2 Fri, 25 Aug 2006 22:55:36 -0000 [8] bazaar 2.0beta format for launchpad release Fri, 29 May 2009 06:00:03 -0000 [9] Upgrading loggerhead to 1.9-rich-root Mon, 11 May 2009 22:35:28 -0000 (mentions eventual switch to rich-root in 2.0) [10] bzr 1.16rc1 released! Fri, 12 Jun 2009 08:00:08 -0000 (confirms eventual switch to rich-root in 2.0) [11] https://launchpad.net/bzr/+announcement/2733 (current outstanding releases: 1.17, 2.0)
| * Make RCS testcase subclasses dynamically.John Doe2009-06-141-5/+8
| |
* | Merge from main branch.W. Trevor King2009-06-191-1/+1
|\ \
| * | Use a more general regex to test GIT commits; GIT's output has changed.Chris Ball2009-06-131-1/+1
| |/
* / Added libbe/encoding.py to wrap input/output/file access appropriately.W. Trevor King2008-11-251-1/+1
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | I borrowed most of the code for this. get_encoding() is from Trac http://trac.edgewall.org/browser/trunk/trac/util/datefmt.py format_datetime() Trac has a BSD license http://trac.edgewall.org/wiki/TracLicense I don't know if such a small snippet requires us to "reproduce the above copyright" or where we need to reproduce it if it is needed. The stdout/stdin replacement code follows http://wiki.python.org/moin/ShellRedirectionFails Because of the stdout replacement, the doctests executes now need an optional 'test' argument to turn off replacement during the doctests, otherwise doctest flips out (since it had set up stdout to catch output, and then we clobbered it's setup). References: http://wiki.python.org/moin/Unicode http://www.amk.ca/python/howto/unicode http://www.python.org/dev/peps/pep-0100/ I also split libbe/editor.py off from libbe.utility.py and started explaining the motivation for the BugDir init flags in it's docstring.
* Major rewrite of RCS backends. RCS now represented as a class.W. Trevor King2008-11-181-136/+82
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Lots of changes and just one commit. This started with bug dac91856-cb6a-4f69-8c03-38ff0b29aab2, when I noticed that new bugs were not being added appropriately with the Git backend. I'd been working with Git trouble before with bug 0cad2ac6-76ef-4a88-abdf-b2e02de76f5c, and decided things would be better off if I just scrapped the current RCS architecture and went to a more object oriented setup. So I did. It's not clear how to add support for an RCS backend: * Create a new module that - defines an inheritor of rsc.RCS, overriding the _rcs_*() methods - provide a new() function for instantizating the new class - defines an inheritor of rcs.RCStestCase, overiding the Class attribute - defines 'suite' a unittest.TestSuite testing the module * Add your new module to the rest in rcs._get_matching_rcs() * Add your new module to the rest in libbe/tests.py Although I'm not sure libbe/tests.py is still usefull. The new framework clears out a bunch of hackery that used to be involved with supporting becommands/diff.py. There's still room for progress though. While implementing the new verision, I moved the testing framework over from doctest to a doctest/unittest combination. Longer tests that don't demonstrate a function's usage should be moved to unittests at the end of the module, since unittest has better support for setup/teardown, etc. The new framework also revealed some underimplented backends, most notably arch. These backends have now been fixed. I also tweaked the test_usage.sh script to run through all the backends if it is called with no arguments. The fix for the dac bug turned out to be an unflushed file write :p.
* Fixed another bug in git.strip_git() (bug 0cad).W. Trevor King2008-11-161-1/+1
| | | | | Also added git mode to test_usage.sh. I'll go through and add modes for the other RCSs...
* Oops... *Now* I've fixed 0cadW. Trevor King2008-11-131-1/+5
|
* Fixed 0cad bug with smaller fix.W. Trevor King2008-11-131-1/+4
| | | | | | | | | | | | | | Hubert Chathi's fix was confusing for me, so I made a simpler change. Seems to work so far. The problem was that os.path.dirname('filename') returns an empty string ('') if there are no directories in the filename. So when `git rev-parse --git-dir` returned '.git', os returned ''. Later programs didn't recognize '' as a valid directory and crashed. My fix returns '.' in this case, so we don't crash, and avoid having to use full paths. I'm not sure why I don't want to use full paths; they just give me bad vibes...
* Add GIT support, from Chris Ball and Michael Stone.Chris Ball2008-05-161-0/+146