Dave Borowitz [Sun, 1 Aug 2010 01:58:21 +0000 (03:58 +0200)]
web: Distinguish between missing files and read errors.
Missing files now return a 404, whereas read errors return a 500.
We now do not need to log 404s and 403s, since they will typically be
logged by the WSGI container and the root causes are fairly unambiguous.
Dave Borowitz [Sun, 1 Aug 2010 01:57:19 +0000 (03:57 +0200)]
Fix iter_tree_contents iteration.
Dave Borowitz [Fri, 30 Jul 2010 11:09:12 +0000 (13:09 +0200)]
object_store: Include subtrees in iteration.
Dave Borowitz [Fri, 30 Jul 2010 11:08:46 +0000 (13:08 +0200)]
object_store: Make iter_tree_contents depth-first.
This mimics the behavior of os.walk as well as common tools like find
and ls -R.
Memory usage may also be better, as directory trees tend to have a
higher branching factor than depth. (Note that the overhead of Python
stack frames may make this not true in many cases, and I haven't run
any benchmarks.)
Jelmer Vernooij [Tue, 27 Jul 2010 18:08:35 +0000 (20:08 +0200)]
Add docstrings for parse_timezone and format_timezone.
Jelmer Vernooij [Tue, 27 Jul 2010 18:06:34 +0000 (20:06 +0200)]
Add Blob.__slots__.
Dave Borowitz [Mon, 26 Jul 2010 17:52:37 +0000 (19:52 +0200)]
pack: Add ThinPackData.from_file.
Dave Borowitz [Mon, 26 Jul 2010 17:44:15 +0000 (19:44 +0200)]
Use GitFile when modifying packed-refs in tests.
Dave Borowitz [Mon, 26 Jul 2010 17:43:17 +0000 (19:43 +0200)]
Don't error when creating GitFiles with the default mode.
Jelmer Vernooij [Mon, 26 Jul 2010 17:41:51 +0000 (19:41 +0200)]
Add trivial test for write_pack_header.
Dave Borowitz [Mon, 26 Jul 2010 17:34:36 +0000 (19:34 +0200)]
pack: Factor out write_pack_header.
Dave Borowitz [Mon, 26 Jul 2010 17:17:50 +0000 (19:17 +0200)]
web: Use write() callable for output.
PEP 333 specifies that start_response must return a write() callable
for compatibility with legacy stream-based APIs, which includes the
tunneled git protocol code.
Dave Borowitz [Mon, 26 Jul 2010 17:17:27 +0000 (19:17 +0200)]
web: Handle empty-string CONTENT_LENGTH.
Dave Borowitz [Mon, 26 Jul 2010 17:16:11 +0000 (19:16 +0200)]
test_objects: Remove unnecessary file writing.
Jelmer Vernooij [Fri, 23 Jul 2010 14:26:58 +0000 (16:26 +0200)]
Use slots.
Jelmer Vernooij [Thu, 22 Jul 2010 11:46:46 +0000 (13:46 +0200)]
Start on 0.6.2.
Jelmer Vernooij [Thu, 22 Jul 2010 11:42:50 +0000 (13:42 +0200)]
release 0.6.1.
Jelmer Vernooij [Wed, 21 Jul 2010 13:17:59 +0000 (15:17 +0200)]
Some restructuredText fixes.
Jelmer Vernooij [Wed, 21 Jul 2010 12:01:51 +0000 (14:01 +0200)]
Use 0.6.1 version number everywhere.
Dave Borowitz [Wed, 21 Jul 2010 11:34:59 +0000 (13:34 +0200)]
Move dul-web's main functionality to web.
Dave Borowitz [Wed, 21 Jul 2010 11:34:28 +0000 (13:34 +0200)]
Move reference WSGI handler to web.py.
This is conditionally defined only if wsgiref is available for python
2.4 compatibility. The failure mode is still the same: if wsgiref is not
installed, users can import the web module but not run dul-web.
Dave Borowitz [Wed, 21 Jul 2010 11:33:38 +0000 (13:33 +0200)]
Make dul-daemon a trivial wrapper around server functionality.
Dave Borowitz [Wed, 21 Jul 2010 11:32:54 +0000 (13:32 +0200)]
Use HTTPGitRequestHandler for test_web.
This quiets up the tests by keeping logging output from going to stderr.
It is still trapped by nose and printed on failure, so this should not
hurt debugging significantly.
Tay Ray Chuan [Tue, 20 Jul 2010 17:22:07 +0000 (19:22 +0200)]
test_file.GitFileTests.test_abort_close_removed: close lockfile before removing it
Prevents a WindowsError when calling os.remove() on the lockfile.
Tay Ray Chuan [Tue, 20 Jul 2010 17:21:09 +0000 (19:21 +0200)]
test_repository.DiskRefsContainerTests.test_remove_packed_without_peeled: prevent '\r' on windows
By writing to the file in binary mode, we stop python from munging the
packed-refs file with '\r'-style line endings on Windows.
Tay Ray Chuan [Tue, 20 Jul 2010 17:18:00 +0000 (19:18 +0200)]
dulwich/_objects.c
Jelmer Vernooij [Tue, 29 Jun 2010 23:36:33 +0000 (01:36 +0200)]
Use --quiet when initializing git repositories in compat tests.
Jelmer Vernooij [Mon, 28 Jun 2010 22:48:54 +0000 (00:48 +0200)]
Use self.store rather than explicitly creating a DiskObjectStore.
Jelmer Vernooij [Mon, 28 Jun 2010 21:17:03 +0000 (23:17 +0200)]
dulwich.pack.write_pack_index_v{1,2} now take a file-like object
rather than a filename.
Jelmer Vernooij [Mon, 28 Jun 2010 20:19:22 +0000 (22:19 +0200)]
Add PackBasedObjectStore.pack_loose_objects().
Jelmer Vernooij [Mon, 28 Jun 2010 19:40:01 +0000 (21:40 +0200)]
Allow overriding paths to executables in GitSSHClient.
Jelmer Vernooij [Mon, 28 Jun 2010 16:44:11 +0000 (18:44 +0200)]
Merge Augie's GitClient refactoring.
Augie Fackler [Fri, 14 May 2010 17:47:09 +0000 (12:47 -0500)]
compat.test_client: test SubprocessGitClient and SSHGitClient
Change-Id: I905e4af9df72b45cc01366fc858f00cedaec61a0
Augie Fackler [Fri, 14 May 2010 17:47:07 +0000 (12:47 -0500)]
client: refactor GitClient subclasses to enhance code commonality
This makes GitClient abstract, and the concrete subclasses now share
all substantive implementation code with their superclass. This makes
the subclasses behave more uniformly, and makes testing the client
implementations easier.
Change-Id: I0a459e0e33afb54f3ba352dc66e7429b0f26c9d4
Jelmer Vernooij [Sat, 26 Jun 2010 22:01:55 +0000 (00:01 +0200)]
parse_tree: Fix tests for pure-python implementation.
Jelmer Vernooij [Sat, 26 Jun 2010 21:59:24 +0000 (23:59 +0200)]
Support Tree.iteritems() returning an iterator rather than a list.
Jelmer Vernooij [Thu, 17 Jun 2010 21:38:46 +0000 (23:38 +0200)]
Remove some unused imports.
Jelmer Vernooij [Thu, 17 Jun 2010 13:54:14 +0000 (15:54 +0200)]
Merge logging support in the web server.
Dave Borowitz [Tue, 11 May 2010 21:03:29 +0000 (14:03 -0700)]
Add simple logging to HTTP server.
Change-Id: I696bf5dcc05c86e115a85828be5b88d4ed3f2b21
Dave Borowitz [Tue, 11 May 2010 19:04:54 +0000 (12:04 -0700)]
Add logging utilities and server logging.
The logging utilities, including default setup, live in log_utils.py.
Callers do not need to import the logging module if all they need is
getLogger.
Change-Id: I5364ae2a2524397b0d13cc727e3f031e3f5adecf
Jelmer Vernooij [Tue, 15 Jun 2010 16:18:57 +0000 (18:18 +0200)]
Fix tests.
Jelmer Vernooij [Sun, 13 Jun 2010 15:48:49 +0000 (17:48 +0200)]
When restting ShaFile._file, also reset ShaFile._magic.
Jelmer Vernooij [Sat, 12 Jun 2010 02:05:31 +0000 (04:05 +0200)]
Fix parsing from file-like objects.
Jelmer Vernooij [Fri, 11 Jun 2010 23:11:37 +0000 (01:11 +0200)]
Fix compatibility tests when python-testtools is installed.
Jelmer Vernooij [Fri, 11 Jun 2010 22:16:56 +0000 (00:16 +0200)]
Merge support for lazy loading packs.
Jelmer Vernooij [Fri, 11 Jun 2010 22:00:35 +0000 (00:00 +0200)]
Add Pack.from_lazy_objects().
Jelmer Vernooij [Thu, 10 Jun 2010 10:54:45 +0000 (12:54 +0200)]
Use TestTools' TestCase so TestSkipped gets picked up correctly.
Jelmer Vernooij [Thu, 10 Jun 2010 10:46:37 +0000 (12:46 +0200)]
Always import TestCase from dulwich.tests so it can be extended or overridden.
Jelmer Vernooij [Thu, 10 Jun 2010 10:36:52 +0000 (12:36 +0200)]
Use Python2.7 SkipTest class if available, patch up testtools if it is
installed so testtools and subunit can report skips properly.
Ross Light [Fri, 4 Jun 2010 05:20:44 +0000 (22:20 -0700)]
Merged changes from trunk
Jelmer Vernooij [Wed, 2 Jun 2010 00:54:25 +0000 (02:54 +0200)]
merge support for MemoryRepo, path fixing in the web server on non-unix platforms
Dave Borowitz [Thu, 13 May 2010 00:47:46 +0000 (17:47 -0700)]
Add a MemoryRepo that stores everything in memory.
This just delegates to a MemoryObjectStore and DictRefsContainer, with a
dict of contents for named files.
As with MemoryObjectStore and DictRefsContainer, this will be useful
primarily for tests.
Change-Id: Ide345a397a0dcde990531bbc4854569ea3274b17
Dave Borowitz [Thu, 13 May 2010 00:47:46 +0000 (17:47 -0700)]
Use correct path separators for named repo files.
Change-Id: I79175078920ef177006bbd323c3d63232f3060b8
Dave Borowitz [Thu, 13 May 2010 00:44:05 +0000 (17:44 -0700)]
Move named file initilization to BaseRepo.
BaseRepo now supports both getting (abstractly) putting the contents of named
files.
Change-Id: I657ddc122eca5f363b101182c34e4a222b6e072c
Jelmer Vernooij [Sun, 30 May 2010 15:00:00 +0000 (17:00 +0200)]
Remove unused, add bug reference.
Jelmer Vernooij [Sun, 30 May 2010 14:49:14 +0000 (16:49 +0200)]
Merge refactoring of report-status parsing.
Jelmer Vernooij [Sat, 29 May 2010 22:51:56 +0000 (00:51 +0200)]
Merge code cleanups from Dave.
Jelmer Vernooij [Sat, 29 May 2010 22:47:07 +0000 (00:47 +0200)]
Merge sorted_tree improvements.
Ross Light [Tue, 25 May 2010 00:55:09 +0000 (17:55 -0700)]
Added SSHGitClient.receive_pack_path and SSHGitClient.upload_pack_path attributes
Dave Borowitz [Tue, 11 May 2010 17:11:29 +0000 (10:11 -0700)]
Fix copyright in dul-web.
As with the rest of the files I authored, this one was authored at work
and so the copyright belongs to my employer.
Change-Id: Ib5405e7f3a4c2d166cdee28e372d76a1caaf7c00
Dave Borowitz [Tue, 11 May 2010 17:10:14 +0000 (10:10 -0700)]
Clean up file headers.
Fixed several typos that had been copied to multiple files. Reworded a
few file summaries. Removed trailing whitespace. Standardized one blank
line after GPL notice.
Change-Id: Id8ba51425dec66ebd71432b49341b464f6b589ac
Dave Borowitz [Tue, 4 May 2010 21:54:05 +0000 (14:54 -0700)]
Fix memory leak in C implementation of sorted_tree_items.
The tuples created by PyTuple_Pack did not have their refcounts
decreased before raising an exception.
Change-Id: Ic7b62c0fb008129d648d2c3bacfbc2d47260229b
Dave Borowitz [Tue, 4 May 2010 21:53:30 +0000 (14:53 -0700)]
Add tests for sorted_tree_items and C implementation.
Change-Id: I653763f8fce86e96d3dd10951a97e558e55003e8
Jelmer Vernooij [Sat, 22 May 2010 20:59:34 +0000 (22:59 +0200)]
release 0.6.0.
Jelmer Vernooij [Sat, 22 May 2010 20:57:59 +0000 (22:57 +0200)]
Add reminder to update NEWS to HACKING.
Jelmer Vernooij [Sat, 22 May 2010 20:57:12 +0000 (22:57 +0200)]
Update NEWS.
Jelmer Vernooij [Sat, 22 May 2010 20:11:18 +0000 (22:11 +0200)]
Merge some extra tests for packed ref deletion with no peeled refs
Jelmer Vernooij [Sat, 22 May 2010 20:07:07 +0000 (22:07 +0200)]
Merge fix for crash deleting a ref.
Jelmer Vernooij [Sat, 22 May 2010 19:55:20 +0000 (21:55 +0200)]
Merge fix for send pack when there is nothing to fetch from Augie.
Augie Fackler [Fri, 21 May 2010 20:59:25 +0000 (15:59 -0500)]
test_repository: test packed ref deletion with no peeled refs
Change-Id: I996f70f8f2433673a5ee74b8b0145035bf4809a2
Augie Fackler [Fri, 21 May 2010 16:34:05 +0000 (11:34 -0500)]
test_repository: clean up whitespace
Change-Id: I5b6406dd16b9e6d2cac2061dc3f0eeb8cebce3ce
Augie Fackler [Thu, 20 May 2010 23:59:27 +0000 (18:59 -0500)]
DiskRefsContainer: don't crash deleting a ref without peeled refs
It's a valid state to have loaded packed refs but not have any peeled
refs. Prior to this change, attempting to delete a tag in that
configuration would cause a traceback when checking 'if name in
self._peeled_refs' since self._peeled_refs was None.
Change-Id: I442d8dd4c97316c6295c9dbdace088feeedddd35
Augie Fackler [Thu, 20 May 2010 23:57:11 +0000 (18:57 -0500)]
repo: clean up whitespace
Augie Fackler [Fri, 14 May 2010 17:47:13 +0000 (12:47 -0500)]
client: fix send_pack when there is nothing to send
Includes a functional test that failed prior to this fix.
Change-Id: I7d95cff21c56a198a836479d8e88a3589e0f196c
Augie Fackler [Fri, 14 May 2010 17:47:12 +0000 (12:47 -0500)]
compat.test_client: test fetching packs
Change-Id: Ib7b271dd30265ea6633fece8c04566165fd8ce84
Jelmer Vernooij [Thu, 20 May 2010 10:28:18 +0000 (12:28 +0200)]
Remove PackData.__del__ as it causes reference loops; use PackData.close
instead.
Augie Fackler [Fri, 14 May 2010 17:47:10 +0000 (12:47 -0500)]
dulwich.client: fix fetch if no progress function is specified
Change-Id: I0627b9bea8d7259984fb6587a877bb027dde7367
Jelmer Vernooij [Mon, 17 May 2010 21:50:35 +0000 (23:50 +0200)]
Merge improvements and extra tests, mainly to deal better with creating non-bare repositories.
Augie Fackler [Fri, 14 May 2010 17:47:03 +0000 (12:47 -0500)]
client: move parsing report-status data into a method
This makes send_pack shorter and less indent-heavy, making a following change
which will require wrapping that code in a try/finally more readable.
Change-Id: I1e3d4d0d79ee61ec0b06dd2c4362c7b113072124
Jelmer Vernooij [Thu, 13 May 2010 09:26:38 +0000 (11:26 +0200)]
Make sure ids get updated when the object changes.
Jelmer Vernooij [Thu, 13 May 2010 09:23:54 +0000 (11:23 +0200)]
Add docstring.
Dave Borowitz [Mon, 3 May 2010 23:44:05 +0000 (16:44 -0700)]
Allow double-staging of files that are deleted in the index.
Change-Id: I92b75d09281d37c2486f77aa52680b8173379016
Dave Borowitz [Mon, 3 May 2010 23:39:10 +0000 (16:39 -0700)]
Move tests that build repos from scratch to their own class.
Change-Id: I7950ed60fedb7098c3db2a63cc1f9ba14d1c1fa2
Dave Borowitz [Mon, 3 May 2010 18:36:56 +0000 (11:36 -0700)]
Implement set_symbolic_ref separately in Disk/DictRefsContainer.
When writing tests, it became clear that the old implementation was broken.
Change-Id: Id98d7af0c92568d1faf555784214d0c1eb298feb
Dave Borowitz [Wed, 28 Apr 2010 17:43:08 +0000 (10:43 -0700)]
Clean up asserts in Tree.
Document the types of arguments to various tree methods instead of
asserting. In particular, these asserts were causing failures in
python2.4, when reading modes from the index resulted in a long rather
than an int. This is harmless, so the asserts were just dropped.
Change-Id: I4a8f8b1527e0fd9571ebdb760e09230f25ac3918
Dave Borowitz [Tue, 4 May 2010 18:20:23 +0000 (11:20 -0700)]
Convert tree mode to int when sorting.
This replaces the exact type check with the more pythonic (and
Python-2.4-compatible) PyNumber_Int, which is equivalent to int().
Change-Id: I142d9cfdf8250d9905a65756a95cf575ea81d377
Dave Borowitz [Wed, 28 Apr 2010 17:41:39 +0000 (10:41 -0700)]
Add non-bare repository tests.
These tests test building non-bare repos from scratch by manually
adding, staging, and committing files. Also fixed various bugs that the
tests exercise.
Change-Id: Ic5458b28f2e5e4534a7855f5be9562f4b59f5839
Dave Borowitz [Wed, 28 Apr 2010 19:36:22 +0000 (12:36 -0700)]
Fix RefsContainer.add_if_new to support dangling symrefs.
Change-Id: I411b60135c3374fefd03701db4bb0dc5d0644164
Dave Borowitz [Wed, 28 Apr 2010 17:34:31 +0000 (10:34 -0700)]
Treat non-existent index files as empty.
Change-Id: Id9738a8fc6d3e53c6ef5b5b8d4144aaa5cd0e075
Dave Borowitz [Sat, 24 Apr 2010 01:53:36 +0000 (18:53 -0700)]
Fix up and test DictRefsContainer.
Refactored RefsContainerTests to put common tests in a common base
class.
Change-Id: Id5bd5a0b88a98bd43404e742972ba111fe5d51f3
Jelmer Vernooij [Tue, 11 May 2010 08:17:54 +0000 (10:17 +0200)]
Cope with missing newlines in patches.
Jelmer Vernooij [Wed, 5 May 2010 10:40:01 +0000 (12:40 +0200)]
Merge cleanups and use of proper per-service capabilities from Augie.
Augie Fackler [Mon, 3 May 2010 03:25:42 +0000 (22:25 -0500)]
test_pack: simpler assertion that passes in more places
Change-Id: I224f251f791f1baf94910cc389797bf08139509a
Tay Ray Chuan [Sun, 2 May 2010 14:10:17 +0000 (16:10 +0200)]
When diffstat is available, dulwich.patch.write_commit_patch() adds the
diffstat followed by a "\n", just before the contents and version info.
The assertion in test_simple() assumes that this is always the case, and
breaks when the diffstat is absent.
Jelmer Vernooij [Sat, 1 May 2010 11:21:15 +0000 (13:21 +0200)]
Implement BaseRepo.__contains__.
Jelmer Vernooij [Fri, 30 Apr 2010 21:18:34 +0000 (23:18 +0200)]
Merge cleanups from Dave.
Dave Borowitz [Tue, 13 Apr 2010 23:29:46 +0000 (16:29 -0700)]
Add repository compat tests.
These tests ensure that dulwich and cgit think that the same repo has
the same set of refs and packed/loose objects.
Change-Id: Ie2f496e846228f3e9e30ff3eba031a3751bd3f62
Dave Borowitz [Fri, 16 Apr 2010 23:05:53 +0000 (16:05 -0700)]
Add SEEK_END to misc.py, since it was added in 2.5.
Change-Id: I9caa891e53423b444063b2801da4043489647703
Dave Borowitz [Tue, 6 Apr 2010 23:29:49 +0000 (16:29 -0700)]
Add a typedef for Py_ssize_t, which is not available in python <2.5.
Based on a suggestion at:
http://mail.python.org/pipermail/python-dev/2006-March/062561.html
Change-Id: I170c17eab8eaf586da1db329c96c015edd59314b
Dave Borowitz [Mon, 5 Apr 2010 23:55:28 +0000 (16:55 -0700)]
Refactor server code to allow custom handler classes.
Also changed to use the same default handler mapping in both TCP
and HTTP servers.
Change-Id: I2fb22768a58ca6f21888593467959bb4176e64e6