<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>dulwich - Python implementation of Git — dulwich 0.9.0 documentation</title> <link rel="stylesheet" href="_static/nature.css" type="text/css" /> <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT: '', VERSION: '0.9.0', COLLAPSE_INDEX: false, FILE_SUFFIX: '.html', HAS_SOURCE: true }; </script> <script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/underscore.js"></script> <script type="text/javascript" src="_static/doctools.js"></script> <link rel="top" title="dulwich 0.9.0 documentation" href="#" /> <link rel="next" title="Possible areas for improvement" href="performance.html" /> </head> <body> <div class="related"> <h3>Navigation</h3> <ul> <li class="right" style="margin-right: 10px"> <a href="genindex.html" title="General Index" accesskey="I">index</a></li> <li class="right" > <a href="performance.html" title="Possible areas for improvement" accesskey="N">next</a> |</li> <li><a href="#">dulwich 0.9.0 documentation</a> »</li> </ul> </div> <div class="document"> <div class="documentwrapper"> <div class="bodywrapper"> <div class="body"> <div class="section" id="dulwich-python-implementation-of-git"> <span id="index"></span><h1>dulwich - Python implementation of Git<a class="headerlink" href="#dulwich-python-implementation-of-git" title="Permalink to this headline">¶</a></h1> <div class="section" id="overview"> <h2>Overview<a class="headerlink" href="#overview" title="Permalink to this headline">¶</a></h2> <p>This is the Dulwich project.</p> <p>It aims to give an interface to git repos (both local and remote) that doesn’t call out to git directly but instead uses pure Python.</p> <p>The project is named after the part of London that Mr. and Mrs. Git live in in the particular Monty Python sketch. It is based on the Python-Git module that James Westby <<a class="reference external" href="mailto:jw+debian%40jameswestby.net">jw+debian<span>@</span>jameswestby<span>.</span>net</a>> released in 2007 and now maintained by Jelmer Vernooij et al.</p> <p>Please file bugs in the Dulwich project on Launchpad:</p> <p><a class="reference external" href="https://bugs.launchpad.net/dulwich/+filebug">https://bugs.launchpad.net/dulwich/+filebug</a></p> <p>The dulwich documentation can be found in doc/ and on the web:</p> <p><a class="reference external" href="http://www.samba.org/~jelmer/dulwich/docs/">http://www.samba.org/~jelmer/dulwich/docs/</a></p> <p>The API reference can be generated using pydoctor, by running “make pydoctor”, or on the web:</p> <p><a class="reference external" href="http://www.samba.org/~jelmer/dulwich/apidocs">http://www.samba.org/~jelmer/dulwich/apidocs</a></p> </div> <div class="section" id="documentation"> <h2>Documentation<a class="headerlink" href="#documentation" title="Permalink to this headline">¶</a></h2> <div class="toctree-wrapper compound"> <ul> <li class="toctree-l1"><a class="reference internal" href="performance.html">Possible areas for improvement</a></li> <li class="toctree-l1"><a class="reference internal" href="protocol.html">Git Server Protocol</a><ul> <li class="toctree-l2"><a class="reference internal" href="protocol.html#transport">Transport</a></li> <li class="toctree-l2"><a class="reference internal" href="protocol.html#protocols">Protocols</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="tutorial/index.html">Tutorial</a><ul> <li class="toctree-l2"><a class="reference internal" href="tutorial/introduction.html">Introduction</a></li> <li class="toctree-l2"><a class="reference internal" href="tutorial/repo.html">The repository</a></li> <li class="toctree-l2"><a class="reference internal" href="tutorial/object-store.html">The object store</a></li> <li class="toctree-l2"><a class="reference internal" href="tutorial/remote.html">Remote repositories</a></li> <li class="toctree-l2"><a class="reference internal" href="tutorial/tag.html">Tagging</a></li> <li class="toctree-l2"><a class="reference internal" href="tutorial/conclusion.html">Conclusion</a></li> </ul> </li> </ul> </div> </div> <div class="section" id="changelog"> <h2>Changelog<a class="headerlink" href="#changelog" title="Permalink to this headline">¶</a></h2> <p>0.9.0 2013-05-31</p> <blockquote> <div><p>BUG FIXES</p> <blockquote> <div><ul class="simple"> <li>Push efficiency - report missing objects only. (#562676, Artem Tikhomirov)</li> <li>Use indentation consistent with C Git in config files. (#1031356, Curt Moore, Jelmer Vernooij)</li> <li>Recognize and skip binary files in diff function. (Takeshi Kanemoto)</li> <li>Fix handling of relative paths in dulwich.client.get_transport_and_path. (Brian Visel, #1169368)</li> <li>Preserve ordering of entries in configuration. (Benjamin Pollack)</li> <li>Support ~ expansion in SSH client paths. (milki, #1083439)</li> <li>Support relative paths in alternate paths. (milki, Michel Lespinasse, #1175007)</li> <li>Log all error messages from wsgiref server to the logging module. This makes the test suit quiet again. (Gary van der Merwe)</li> <li>Support passing None for empty tree in changes_from_tree. (Kevin Watters)</li> <li>Support fetching empty repository in client. (milki, #1060462)</li> </ul> </div></blockquote> <p>IMPROVEMENTS:</p> <blockquote> <div><ul class="simple"> <li>Add optional honor_filemode flag to build_index_from_tree. (Mark Mikofski)</li> <li>Support core/filemode setting when building trees. (Jelmer Vernooij)</li> <li>Add chapter on tags in tutorial. (Ryan Faulkner)</li> </ul> </div></blockquote> <p>FEATURES</p> <blockquote> <div><ul class="simple"> <li>Add support for mergetags. (milki, #963525)</li> <li>Add support for posix shell hooks. (milki)</li> </ul> </div></blockquote> </div></blockquote> <p>0.8.7 2012-11-27</p> <blockquote> <div><p>BUG FIXES</p> <blockquote> <div><ul class="simple"> <li>Fix use of alternates in <tt class="docutils literal"><span class="pre">DiskObjectStore</span></tt>.{__contains__,__iter__}. (Dmitriy)</li> <li>Fix compatibility with Python 2.4. (David Carr)</li> </ul> </div></blockquote> </div></blockquote> <p>0.8.6 2012-11-09</p> <blockquote> <div><p>API CHANGES</p> <blockquote> <div><ul class="simple"> <li>dulwich.__init__ no longer imports client, protocol, repo and server modules. (Jelmer Vernooij)</li> </ul> </div></blockquote> <p>FEATURES</p> <blockquote> <div><ul class="simple"> <li>ConfigDict now behaves more like a dictionary. (Adam ‘Cezar’ Jenkins, issue #58)</li> <li>HTTPGitApplication now takes an optional <cite>fallback_app</cite> argument. (Jonas Haag, issue #67)</li> <li>Support for large pack index files. (Jameson Nash)</li> </ul> </div></blockquote> <p>TESTING</p> <blockquote> <div><ul class="simple"> <li>Make index entry tests a little bit less strict, to cope with slightly different behaviour on various platforms. (Jelmer Vernooij)</li> <li><tt class="docutils literal"><span class="pre">setup.py</span> <span class="pre">test</span></tt> (available when setuptools is installed) now runs all tests, not just the basic unit tests. (Jelmer Vernooij)</li> </ul> </div></blockquote> <p>BUG FIXES</p> <blockquote> <div><ul class="simple"> <li>Commit._deserialize now actually deserializes the current state rather than the previous one. (Yifan Zhang, issue #59)</li> <li>Handle None elements in lists of TreeChange objects. (Alex Holmes)</li> <li>Support cloning repositories without HEAD set. (D-Key, Jelmer Vernooij, issue #69)</li> <li>Support <tt class="docutils literal"><span class="pre">MemoryRepo.get_config</span></tt>. (Jelmer Vernooij)</li> <li>In <tt class="docutils literal"><span class="pre">get_transport_and_path</span></tt>, pass extra keyword arguments on to HttpGitClient. (Jelmer Vernooij)</li> </ul> </div></blockquote> </div></blockquote> <p>0.8.5 2012-03-29</p> <blockquote> <div><p>BUG FIXES</p> <blockquote> <div><ul class="simple"> <li>Avoid use of ‘with’ in dulwich.index. (Jelmer Vernooij)</li> <li>Be a little bit strict about OS behaviour in index tests. Should fix the tests on Debian GNU/kFreeBSD. (Jelmer Vernooij)</li> </ul> </div></blockquote> </div></blockquote> <p>0.8.4 2012-03-28</p> <blockquote> <div><p>BUG FIXES</p> <blockquote> <div><ul class="simple"> <li>Options on the same line as sections in config files are now supported. (Jelmer Vernooij, #920553)</li> <li>Only negotiate capabilities that are also supported by the server. (Rod Cloutier, Risto Kankkunen)</li> <li>Fix parsing of invalid timezone offsets with two minus signs. (Jason R. Coombs, #697828)</li> <li>Reset environment variables during tests, to avoid test isolation leaks reading ~/.gitconfig. (Risto Kankkunen)</li> </ul> </div></blockquote> <p>TESTS</p> <blockquote> <div><ul class="simple"> <li>$HOME is now explicitly specified for tests that use it to read <tt class="docutils literal"><span class="pre">~/.gitconfig</span></tt>, to prevent test isolation issues. (Jelmer Vernooij, #920330)</li> </ul> </div></blockquote> <p>FEATURES</p> <blockquote> <div><ul class="simple"> <li>Additional arguments to get_transport_and_path are now passed on to the constructor of the transport. (Sam Vilain)</li> <li>The WSGI server now transparently handles when a git client submits data using Content-Encoding: gzip. (David Blewett, Jelmer Vernooij)</li> <li>Add dulwich.index.build_index_from_tree(). (milki)</li> </ul> </div></blockquote> </div></blockquote> <p>0.8.3 2012-01-21</p> <blockquote> <div><p>FEATURES</p> <blockquote> <div><ul class="simple"> <li>The config parser now supports the git-config file format as described in git-config(1) and can write git config files. (Jelmer Vernooij, #531092, #768687)</li> <li><tt class="docutils literal"><span class="pre">Repo.do_commit</span></tt> will now use the user identity from .git/config or ~/.gitconfig if none was explicitly specified. (Jelmer Vernooij)</li> </ul> </div></blockquote> <p>BUG FIXES</p> <blockquote> <div><ul class="simple"> <li>Allow <tt class="docutils literal"><span class="pre">determine_wants</span></tt> methods to include the zero sha in their return value. (Jelmer Vernooij)</li> </ul> </div></blockquote> </div></blockquote> <p>0.8.2 2011-12-18</p> <blockquote> <div><p>BUG FIXES</p> <blockquote> <div><ul class="simple"> <li>Cope with different zlib buffer sizes in sha1 file parser. (Jelmer Vernooij)</li> <li>Fix get_transport_and_path for HTTP/HTTPS URLs. (Bruno Renié)</li> <li>Avoid calling free_objects() on NULL in error cases. (Chris Eberle)</li> <li>Fix use –bare argument to ‘dulwich init’. (Chris Eberle)</li> <li>Properly abort connections when the determine_wants function raises an exception. (Jelmer Vernooij, #856769)</li> <li>Tweak xcodebuild hack to deal with more error output. (Jelmer Vernooij, #903840)</li> </ul> </div></blockquote> <p>FEATURES</p> <blockquote> <div><ul class="simple"> <li>Add support for retrieving tarballs from remote servers. (Jelmer Vernooij, #379087)</li> <li>New method <tt class="docutils literal"><span class="pre">update_server_info</span></tt> which generates data for dumb server access. (Jelmer Vernooij, #731235)</li> </ul> </div></blockquote> </div></blockquote> <p>0.8.1 2011-10-31</p> <blockquote> <div><p>FEATURES</p> <blockquote> <div><ul class="simple"> <li>Repo.do_commit has a new argument ‘ref’.</li> <li>Repo.do_commit has a new argument ‘merge_heads’. (Jelmer Vernooij)</li> <li>New <tt class="docutils literal"><span class="pre">Repo.get_walker</span></tt> method. (Jelmer Vernooij)</li> <li>New <tt class="docutils literal"><span class="pre">Repo.clone</span></tt> method. (Jelmer Vernooij, #725369)</li> <li><tt class="docutils literal"><span class="pre">GitClient.send_pack</span></tt> now supports the ‘side-band-64k’ capability. (Jelmer Vernooij)</li> <li><tt class="docutils literal"><span class="pre">HttpGitClient</span></tt> which supports the smart server protocol over HTTP. “dumb” access is not yet supported. (Jelmer Vernooij, #373688)</li> <li>Add basic support for alternates. (Jelmer Vernooij, #810429)</li> </ul> </div></blockquote> <p>CHANGES</p> <blockquote> <div><ul class="simple"> <li>unittest2 or python >= 2.7 is now required for the testsuite. testtools is no longer supported. (Jelmer Vernooij, #830713)</li> </ul> </div></blockquote> <p>BUG FIXES</p> <blockquote> <div><ul class="simple"> <li>Fix compilation with older versions of MSVC. (Martin gz)</li> <li>Special case ‘refs/stash’ as a valid ref. (Jelmer Vernooij, #695577)</li> <li>Smart protocol clients can now change refs even if they are not uploading new data. (Jelmer Vernooij, #855993)</li> </ul> </div></blockquote> <ul class="simple"> <li>Don’t compile C extensions when running in pypy. (Ronny Pfannschmidt, #881546)</li> <li>Use different name for strnlen replacement function to avoid clashing with system strnlen. (Jelmer Vernooij, #880362)</li> </ul> <p>API CHANGES</p> <blockquote> <div><ul class="simple"> <li><tt class="docutils literal"><span class="pre">Repo.revision_history</span></tt> is now deprecated in favor of <tt class="docutils literal"><span class="pre">Repo.get_walker</span></tt>. (Jelmer Vernooij)</li> </ul> </div></blockquote> </div></blockquote> <p>0.8.0 2011-08-07</p> <blockquote> <div><p>FEATURES</p> <blockquote> <div><ul class="simple"> <li>New DeltaChainIterator abstract class for quickly iterating all objects in a pack, with implementations for pack indexing and inflation. (Dave Borowitz)</li> <li>New walk module with a Walker class for customizable commit walking. (Dave Borowitz)</li> <li>New tree_changes_for_merge function in diff_tree. (Dave Borowitz)</li> <li>Easy rename detection in RenameDetector even without find_copies_harder. (Dave Borowitz)</li> </ul> </div></blockquote> <p>BUG FIXES</p> <blockquote> <div><ul class="simple"> <li>Avoid storing all objects in memory when writing pack. (Jelmer Vernooij, #813268)</li> <li>Support IPv6 for git:// connections. (Jelmer Vernooij, #801543)</li> <li>Improve performance of Repo.revision_history(). (Timo Schmid, #535118)</li> <li>Fix use of SubprocessWrapper on Windows. (Paulo Madeira, #670035)</li> <li>Fix compilation on newer versions of Mac OS X (Lion and up). (Ryan McKern, #794543)</li> <li>Prevent raising ValueError for correct refs in RefContainer.__delitem__.</li> <li>Correctly return a tuple from MemoryObjectStore.get_raw. (Dave Borowitz)</li> <li>Fix a bug in reading the pack checksum when there are fewer than 20 bytes left in the buffer. (Dave Borowitz)</li> <li>Support ~ in git:// URL paths. (Jelmer Vernooij, #813555)</li> <li>Make ShaFile.__eq__ work when other is not a ShaFile. (Dave Borowitz)</li> <li>ObjectStore.get_graph_walker() now no longer yields the same revision more than once. This has a significant improvement for performance when wide revision graphs are involved. (Jelmer Vernooij, #818168)</li> <li>Teach ReceivePackHandler how to read empty packs. (Dave Borowitz)</li> <li>Don’t send a pack with duplicates of the same object. (Dave Borowitz)</li> <li>Teach the server how to serve a clone of an empty repo. (Dave Borowitz)</li> <li>Correctly advertise capabilities during receive-pack. (Dave Borowitz)</li> <li>Fix add/add and add/rename conflicts in tree_changes_for_merge. (Dave Borowitz)</li> <li>Use correct MIME types in web server. (Dave Borowitz)</li> </ul> </div></blockquote> <p>API CHANGES</p> <blockquote> <div><ul class="simple"> <li>write_pack no longer takes the num_objects argument and requires an object to be passed in that is iterable (rather than an iterator) and that provides __len__. (Jelmer Vernooij)</li> <li>write_pack_data has been renamed to write_pack_objects and no longer takes a num_objects argument. (Jelmer Vernooij)</li> <li>take_msb_bytes, read_zlib_chunks, unpack_objects, and PackStreamReader.read_objects now take an additional argument indicating a crc32 to compute. (Dave Borowitz)</li> <li>PackObjectIterator was removed; its functionality is still exposed by PackData.iterobjects. (Dave Borowitz)</li> <li>Add a sha arg to write_pack_object to incrementally compute a SHA. (Dave Borowitz)</li> <li>Include offset in PackStreamReader results. (Dave Borowitz)</li> <li>Move PackStreamReader from server to pack. (Dave Borowitz)</li> <li>Extract a check_length_and_checksum, compute_file_sha, and pack_object_header pack helper functions. (Dave Borowitz)</li> <li>Extract a compute_file_sha function. (Dave Borowitz)</li> <li>Remove move_in_thin_pack as a separate method; add_thin_pack now completes the thin pack and moves it in in one step. Remove ThinPackData as well. (Dave Borowitz)</li> <li>Custom buffer size in read_zlib_chunks. (Dave Borowitz)</li> <li>New UnpackedObject data class that replaces ad-hoc tuples in the return value of unpack_object and various DeltaChainIterator methods. (Dave Borowitz)</li> <li>Add a lookup_path convenience method to Tree. (Dave Borowitz)</li> <li>Optionally create RenameDetectors without passing in tree SHAs. (Dave Borowitz)</li> <li>Optionally include unchanged entries in RenameDetectors. (Dave Borowitz)</li> <li>Optionally pass a RenameDetector to tree_changes. (Dave Borowitz)</li> <li>Optionally pass a request object through to server handlers. (Dave Borowitz)</li> </ul> </div></blockquote> <p>TEST CHANGES</p> <blockquote> <div><ul class="simple"> <li>If setuptools is installed, “python setup.py test” will now run the testsuite. (Jelmer Vernooij)</li> <li>Add a new build_pack test utility for building packs from a simple spec. (Dave Borowitz)</li> <li>Add a new build_commit_graph test utility for building commits from a simple spec. (Dave Borowitz)</li> </ul> </div></blockquote> </div></blockquote> <p>0.7.1 2011-04-12</p> <blockquote> <div><p>BUG FIXES</p> <blockquote> <div><ul class="simple"> <li>Fix double decref in _diff_tree.c. (Ted Horst, #715528)</li> <li>Fix the build on Windows. (Pascal Quantin)</li> <li>Fix get_transport_and_path compatibility with pre-2.6.5 versions of Python. (Max Bowsher, #707438)</li> <li>BaseObjectStore.determine_wants_all no longer breaks on zero SHAs. (Jelmer Vernooij)</li> <li>write_tree_diff() now supports submodules. (Jelmer Vernooij)</li> <li>Fix compilation for XCode 4 and older versions of distutils.sysconfig. (Daniele Sluijters)</li> </ul> </div></blockquote> <p>IMPROVEMENTS</p> <blockquote> <div><ul class="simple"> <li>Sphinxified documentation. (Lukasz Balcerzak)</li> <li>Add Pack.keep.(Marc Brinkmann)</li> </ul> </div></blockquote> <p>API CHANGES</p> <blockquote> <div><ul class="simple"> <li>The order of the parameters to Tree.add(name, mode, sha) has changed, and is now consistent with the rest of Dulwich. Existing code will still work but print a DeprecationWarning. (Jelmer Vernooij, #663550)</li> <li>Tree.entries() is now deprecated in favour of Tree.items() and Tree.iteritems(). (Jelmer Vernooij)</li> </ul> </div></blockquote> </div></blockquote> <p>0.7.0 2011-01-21</p> <blockquote> <div><p>FEATURES</p> <blockquote> <div><ul class="simple"> <li>New <cite>dulwich.diff_tree</cite> module for simple content-based rename detection. (Dave Borowitz)</li> <li>Add Tree.items(). (Jelmer Vernooij)</li> <li>Add eof() and unread_pkt_line() methods to Protocol. (Dave Borowitz)</li> <li>Add write_tree_diff(). (Jelmer Vernooij)</li> <li>Add <cite>serve_command</cite> function for git server commands as executables. (Jelmer Vernooij)</li> <li>dulwich.client.get_transport_and_path now supports rsync-style repository URLs. (Dave Borowitz, #568493)</li> </ul> </div></blockquote> <p>BUG FIXES</p> <blockquote> <div><ul class="simple"> <li>Correct short-circuiting operation for no-op fetches in the server. (Dave Borowitz)</li> <li>Support parsing git mbox patches without a version tail, as generated by Mercurial. (Jelmer Vernooij)</li> <li>Fix dul-receive-pack and dul-upload-pack. (Jelmer Vernooij)</li> <li>Zero-padded file modes in Tree objects no longer trigger an exception but the check code warns about them. (Augie Fackler, #581064)</li> <li>Repo.init() now honors the mkdir flag. (#671159)</li> <li>The ref format is now checked when setting a ref rather than when reading it back. (Dave Borowitz, #653527)</li> <li>Make sure pack files are closed correctly. (Tay Ray Chuan)</li> </ul> </div></blockquote> <p>DOCUMENTATION</p> <blockquote> <div><ul> <li><p class="first">Run the tutorial inside the test suite. (Jelmer Vernooij)</p> </li> <li><dl class="first docutils"> <dt>Reorganized and updated the tutorial. (Jelmer Vernooij, Dave Borowitz, #610550,</dt> <dd><p class="first last">#610540)</p> </dd> </dl> </li> </ul> </div></blockquote> </div></blockquote> <p>0.6.2 2010-10-16</p> <blockquote> <div><p>BUG FIXES</p> <blockquote> <div><ul class="simple"> <li>HTTP server correctly handles empty CONTENT_LENGTH. (Dave Borowitz)</li> <li>Don’t error when creating GitFiles with the default mode. (Dave Borowitz)</li> <li>ThinPackData.from_file now works with resolve_ext_ref callback. (Dave Borowitz)</li> <li>Provide strnlen() on mingw32 which doesn’t have it. (Hans Kolek)</li> <li>Set bare=true in the configuratin for bare repositories. (Dirk Neumann)</li> </ul> </div></blockquote> <p>FEATURES</p> <blockquote> <div><ul class="simple"> <li>Use slots for core objects to save up on memory. (Jelmer Vernooij)</li> <li>Web server supports streaming progress/pack output. (Dave Borowitz)</li> <li>New public function dulwich.pack.write_pack_header. (Dave Borowitz)</li> <li>Distinguish between missing files and read errors in HTTP server. (Dave Borowitz)</li> <li>Initial work on support for fastimport using python-fastimport. (Jelmer Vernooij)</li> <li>New dulwich.pack.MemoryPackIndex class. (Jelmer Vernooij)</li> <li>Delegate SHA peeling to the object store. (Dave Borowitz)</li> </ul> </div></blockquote> <p>TESTS</p> <blockquote> <div><ul class="simple"> <li>Use GitFile when modifying packed-refs in tests. (Dave Borowitz)</li> <li>New tests in test_web with better coverage and fewer ad-hoc mocks. (Dave Borowitz)</li> <li>Standardize quote delimiters in test_protocol. (Dave Borowitz)</li> <li>Fix use when testtools is installed. (Jelmer Vernooij)</li> <li>Add trivial test for write_pack_header. (Jelmer Vernooij)</li> <li>Refactor some of dulwich.tests.compat.server_utils. (Dave Borowitz)</li> <li>Allow overwriting id property of objects in test utils. (Dave Borowitz)</li> <li>Use real in-memory objects rather than stubs for server tests. (Dave Borowitz)</li> <li>Clean up MissingObjectFinder. (Dave Borowitz)</li> </ul> </div></blockquote> <p>API CHANGES</p> <blockquote> <div><ul class="simple"> <li>ObjectStore.iter_tree_contents now walks contents in depth-first, sorted order. (Dave Borowitz)</li> <li>ObjectStore.iter_tree_contents can optionally yield tree objects as well. (Dave Borowitz).</li> <li>Add side-band-64k support to ReceivePackHandler. (Dave Borowitz)</li> <li>Change server capabilities methods to classmethods. (Dave Borowitz)</li> <li>Tweak server handler injection. (Dave Borowitz)</li> <li>PackIndex1 and PackIndex2 now subclass FilePackIndex, which is itself a subclass of PackIndex. (Jelmer Vernooij)</li> </ul> </div></blockquote> <p>DOCUMENTATION</p> <blockquote> <div><ul class="simple"> <li>Add docstrings for various functions in dulwich.objects. (Jelmer Vernooij)</li> <li>Clean up docstrings in dulwich.protocol. (Dave Borowitz)</li> <li>Explicitly specify allowed protocol commands to ProtocolGraphWalker.read_proto_line. (Dave Borowitz)</li> <li>Add utility functions to DictRefsContainer. (Dave Borowitz)</li> </ul> </div></blockquote> </div></blockquote> <p>0.6.1 2010-07-22</p> <blockquote> <div><p>BUG FIXES</p> <blockquote> <div><ul class="simple"> <li>Fix memory leak in C implementation of sorted_tree_items. (Dave Borowitz)</li> <li>Use correct path separators for named repo files. (Dave Borowitz)</li> <li>python > 2.7 and testtools-based test runners will now also pick up skipped tests correctly. (Jelmer Vernooij)</li> </ul> </div></blockquote> <p>FEATURES</p> <blockquote> <div><ul class="simple"> <li>Move named file initilization to BaseRepo. (Dave Borowitz)</li> <li>Add logging utilities and git/HTTP server logging. (Dave Borowitz)</li> <li>The GitClient interface has been cleaned up and instances are now reusable. (Augie Fackler)</li> <li>Allow overriding paths to executables in GitSSHClient. (Ross Light, Jelmer Vernooij, #585204)</li> <li>Add PackBasedObjectStore.pack_loose_objects(). (Jelmer Vernooij)</li> </ul> </div></blockquote> <p>TESTS</p> <blockquote> <div><ul class="simple"> <li>Add tests for sorted_tree_items and C implementation. (Dave Borowitz)</li> <li>Add a MemoryRepo that stores everything in memory. (Dave Borowitz)</li> <li>Quiet logging output from web tests. (Dave Borowitz)</li> <li>More flexible version checking for compat tests. (Dave Borowitz)</li> <li>Compat tests for servers with and without side-band-64k. (Dave Borowitz)</li> </ul> </div></blockquote> <p>CLEANUP</p> <blockquote> <div><ul class="simple"> <li>Clean up file headers. (Dave Borowitz)</li> </ul> </div></blockquote> <p>TESTS</p> <blockquote> <div><ul class="simple"> <li>Use GitFile when modifying packed-refs in tests. (Dave Borowitz)</li> </ul> </div></blockquote> <p>API CHANGES</p> <blockquote> <div><ul class="simple"> <li>dulwich.pack.write_pack_index_v{1,2} now take a file-like object rather than a filename. (Jelmer Vernooij)</li> <li>Make dul-daemon/dul-web trivial wrappers around server functionality. (Dave Borowitz)</li> <li>Move reference WSGI handler to web.py. (Dave Borowitz)</li> <li>Factor out _report_status in ReceivePackHandler. (Dave Borowitz)</li> <li>Factor out a function to convert a line to a pkt-line. (Dave Borowitz)</li> </ul> </div></blockquote> </div></blockquote> <p>0.6.0 2010-05-22</p> <p>note: This list is most likely incomplete for 0.6.0.</p> <blockquote> <div><p>BUG FIXES</p> <blockquote> <div><ul class="simple"> <li>Fix ReceivePackHandler to disallow removing refs without delete-refs. (Dave Borowitz)</li> <li>Deal with capabilities required by the client, even if they can not be disabled in the server. (Dave Borowitz)</li> <li>Fix trailing newlines in generated patch files. (Jelmer Vernooij)</li> <li>Implement RefsContainer.__contains__. (Jelmer Vernooij)</li> <li>Cope with r in ref files on Windows. ( <a class="reference external" href="http://github.com/jelmer/dulwich/issues/#issue/13">http://github.com/jelmer/dulwich/issues/#issue/13</a>, Jelmer Vernooij)</li> <li>Fix GitFile breakage on Windows. (Anatoly Techtonik, #557585)</li> <li>Support packed ref deletion with no peeled refs. (Augie Fackler)</li> <li>Fix send pack when there is nothing to fetch. (Augie Fackler)</li> <li>Fix fetch if no progress function is specified. (Augie Fackler)</li> <li>Allow double-staging of files that are deleted in the index. (Dave Borowitz)</li> <li>Fix RefsContainer.add_if_new to support dangling symrefs. (Dave Borowitz)</li> <li>Non-existant index files in non-bare repositories are now treated as empty. (Dave Borowitz)</li> <li>Always update ShaFile.id when the contents of the object get changed. (Jelmer Vernooij)</li> <li>Various Python2.4-compatibility fixes. (Dave Borowitz)</li> <li>Fix thin pack handling. (Dave Borowitz)</li> </ul> </div></blockquote> <p>FEATURES</p> <blockquote> <div><ul class="simple"> <li>Add include-tag capability to server. (Dave Borowitz)</li> <li>New dulwich.fastexport module that can generate fastexport streams. (Jelmer Vernooij)</li> <li>Implemented BaseRepo.__contains__. (Jelmer Vernooij)</li> <li>Add __setitem__ to DictRefsContainer. (Dave Borowitz)</li> <li>Overall improvements checking Git objects. (Dave Borowitz)</li> <li>Packs are now verified while they are received. (Dave Borowitz)</li> </ul> </div></blockquote> <p>TESTS</p> <blockquote> <div><ul class="simple"> <li>Add framework for testing compatibility with C Git. (Dave Borowitz)</li> <li>Add various tests for the use of non-bare repositories. (Dave Borowitz)</li> <li>Cope with diffstat not being available on all platforms. (Tay Ray Chuan, Jelmer Vernooij)</li> <li>Add make_object and make_commit convenience functions to test utils. (Dave Borowitz)</li> </ul> </div></blockquote> <p>API BREAKAGES</p> <blockquote> <div><ul class="simple"> <li>The ‘committer’ and ‘message’ arguments to Repo.do_commit() have been swapped. ‘committer’ is now optional. (Jelmer Vernooij)</li> <li>Repo.get_blob, Repo.commit, Repo.tag and Repo.tree are now deprecated. (Jelmer Vernooij)</li> <li>RefsContainer.set_ref() was renamed to RefsContainer.set_symbolic_ref(), for clarity. (Jelmer Vernooij)</li> </ul> </div></blockquote> <p>API CHANGES</p> <blockquote> <div><ul class="simple"> <li>The primary serialization APIs in dulwich.objects now work with chunks of strings rather than with full-text strings. (Jelmer Vernooij)</li> </ul> </div></blockquote> </div></blockquote> <p>0.5.02010-03-03</p> <blockquote> <div><p>BUG FIXES</p> <blockquote> <div><ul class="simple"> <li>Support custom fields in commits (readonly). (Jelmer Vernooij)</li> <li>Improved ref handling. (Dave Borowitz)</li> <li>Rework server protocol to be smarter and interoperate with cgit client. (Dave Borowitz)</li> <li>Add a GitFile class that uses the same locking protocol for writes as cgit. (Dave Borowitz)</li> <li>Cope with forward slashes correctly in the index on Windows. (Jelmer Vernooij, #526793)</li> </ul> </div></blockquote> <p>FEATURES</p> <blockquote> <div><ul class="simple"> <li>–pure option to setup.py to allow building/installing without the C extensions. (Hal Wine, Anatoly Techtonik, Jelmer Vernooij, #434326)</li> <li>Implement Repo.get_config(). (Jelmer Vernooij, Augie Fackler)</li> <li>HTTP dumb and smart server. (Dave Borowitz)</li> <li>Add abstract baseclass for Repo that does not require file system operations. (Dave Borowitz)</li> </ul> </div></blockquote> </div></blockquote> <p>0.4.1 2010-01-03</p> <blockquote> <div><p>FEATURES</p> <blockquote> <div><ul class="simple"> <li>Add ObjectStore.iter_tree_contents(). (Jelmer Vernooij)</li> <li>Add Index.changes_from_tree(). (Jelmer Vernooij)</li> <li>Add ObjectStore.tree_changes(). (Jelmer Vernooij)</li> <li>Add functionality for writing patches in dulwich.patch. (Jelmer Vernooij)</li> </ul> </div></blockquote> </div></blockquote> <p>0.4.0 2009-10-07</p> <blockquote> <div><p>DOCUMENTATION</p> <blockquote> <div><ul class="simple"> <li>Added tutorial.</li> </ul> </div></blockquote> <p>API CHANGES</p> <blockquote> <div><ul class="simple"> <li>dulwich.object_store.tree_lookup_path will now return the mode and sha of the object found rather than the object itself.</li> </ul> </div></blockquote> <p>BUG FIXES</p> <blockquote> <div><ul class="simple"> <li>Use binascii.hexlify / binascii.unhexlify for better performance.</li> <li>Cope with extra unknown data in index files by ignoring it (for now).</li> <li>Add proper error message when server unexpectedly hangs up. (#415843)</li> <li>Correctly write opcode for equal in create_delta.</li> </ul> </div></blockquote> </div></blockquote> <p>0.3.3 2009-07-23</p> <blockquote> <div><p>FEATURES</p> <blockquote> <div><ul class="simple"> <li>Implement ShaFile.__hash__().</li> <li>Implement Tree.__len__()</li> </ul> </div></blockquote> <p>BUG FIXES</p> <blockquote> <div><ul class="simple"> <li>Check for ‘objects’ and ‘refs’ directories when looking for a Git repository. (#380818)</li> </ul> </div></blockquote> </div></blockquote> <p>0.3.2 2009-05-20</p> <blockquote> <div><p>BUG FIXES</p> <blockquote> <div><ul class="simple"> <li>Support the encoding field in Commits.</li> <li>Some Windows compatibility fixes.</li> <li>Fixed several issues in commit support.</li> </ul> </div></blockquote> <p>FEATURES</p> <blockquote> <div><ul class="simple"> <li>Basic support for handling submodules.</li> </ul> </div></blockquote> </div></blockquote> <p>0.3.1 2009-05-13</p> <blockquote> <div><p>FEATURES</p> <blockquote> <div><ul class="simple"> <li>Implemented Repo.__getitem__, Repo.__setitem__ and Repo.__delitem__ to access content.</li> </ul> </div></blockquote> <p>API CHANGES</p> <blockquote> <div><ul class="simple"> <li>Removed Repo.set_ref, Repo.remove_ref, Repo.tags, Repo.get_refs and Repo.heads in favor of Repo.refs, a dictionary-like object for accessing refs.</li> </ul> </div></blockquote> <p>BUG FIXES</p> <blockquote> <div><ul class="simple"> <li>Removed import of ‘sha’ module in objects.py, which was causing deprecation warnings on Python 2.6.</li> </ul> </div></blockquote> </div></blockquote> <p>0.3.0 2009-05-10</p> <blockquote> <div><p>FEATURES</p> <blockquote> <div><ul class="simple"> <li>A new function ‘commit_tree’ has been added that can commit a tree based on an index.</li> </ul> </div></blockquote> <p>BUG FIXES</p> <blockquote> <div><ul class="simple"> <li>The memory usage when generating indexes has been significantly reduced.</li> <li>A memory leak in the C implementation of parse_tree has been fixed.</li> <li>The send-pack smart server command now works. (Thanks Scott Chacon)</li> <li>The handling of short timestamps (less than 10 digits) has been fixed.</li> <li>The handling of timezones has been fixed.</li> </ul> </div></blockquote> </div></blockquote> <p>0.2.1 2009-04-30</p> <blockquote> <div><p>BUG FIXES</p> <blockquote> <div><ul class="simple"> <li>Fix compatibility with Python2.4.</li> </ul> </div></blockquote> </div></blockquote> <p>0.2.0 2009-04-30</p> <blockquote> <div><p>FEATURES</p> <blockquote> <div><ul class="simple"> <li>Support for activity reporting in smart protocol client.</li> <li>Optional C extensions for better performance in a couple of places that are performance-critical.</li> </ul> </div></blockquote> </div></blockquote> <p>0.1.1 2009-03-13</p> <blockquote> <div><p>BUG FIXES</p> <blockquote> <div><ul class="simple"> <li>Fixed regression in Repo.find_missing_objects()</li> <li>Don’t fetch ^{} objects from remote hosts, as requesting them causes a hangup.</li> <li>Always write pack to disk completely before calculating checksum.</li> </ul> </div></blockquote> <p>FEATURES</p> <blockquote> <div><ul class="simple"> <li>Allow disabling thin packs when talking to remote hosts.</li> </ul> </div></blockquote> </div></blockquote> <p>0.1.0 2009-01-24</p> <blockquote> <div><ul class="simple"> <li>Initial release.</li> </ul> </div></blockquote> </div> <div class="section" id="indices-and-tables"> <h2>Indices and tables<a class="headerlink" href="#indices-and-tables" title="Permalink to this headline">¶</a></h2> <ul class="simple"> <li><a class="reference internal" href="genindex.html"><em>Index</em></a></li> <li><a class="reference internal" href="py-modindex.html"><em>Module Index</em></a></li> <li><a class="reference internal" href="search.html"><em>Search Page</em></a></li> </ul> </div> </div> </div> </div> </div> <div class="sphinxsidebar"> <div class="sphinxsidebarwrapper"> <h3><a href="#">Table Of Contents</a></h3> <ul> <li><a class="reference internal" href="#">dulwich - Python implementation of Git</a><ul> <li><a class="reference internal" href="#overview">Overview</a></li> <li><a class="reference internal" href="#documentation">Documentation</a><ul> </ul> </li> <li><a class="reference internal" href="#changelog">Changelog</a></li> <li><a class="reference internal" href="#indices-and-tables">Indices and tables</a></li> </ul> </li> </ul> <h4>Next topic</h4> <p class="topless"><a href="performance.html" title="next chapter">Possible areas for improvement</a></p> <h3>This Page</h3> <ul class="this-page-menu"> <li><a href="_sources/index.txt" rel="nofollow">Show Source</a></li> </ul> <div id="searchbox" style="display: none"> <h3>Quick search</h3> <form class="search" action="search.html" method="get"> <input type="text" name="q" /> <input type="submit" value="Go" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> <p class="searchtip" style="font-size: 90%"> Enter search terms or a module, class or function name. </p> </div> <script type="text/javascript">$('#searchbox').show(0);</script> </div> </div> <div class="clearer"></div> </div> <div class="related"> <h3>Navigation</h3> <ul> <li class="right" style="margin-right: 10px"> <a href="genindex.html" title="General Index" >index</a></li> <li class="right" > <a href="performance.html" title="Possible areas for improvement" >next</a> |</li> <li><a href="#">dulwich 0.9.0 documentation</a> »</li> </ul> </div> <div class="footer"> © Copyright 2011, Jelmer Vernooij. Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3. </div> </body> </html>