10.19.16	2020-04-17
2
3 * Don't send "deepen None" to server if graph walker
4   supports shallow. (Jelmer Vernooij, #747)
5
6 * Support tweaking the compression level for
7   loose objects through the "core.looseCompression" and
8   "core.compression" settings. (Jelmer Vernooij)
9
10 * Support tweaking the compression level for
11   pack objects through the "core.packCompression" and
12   "core.compression" settings. (Jelmer Vernooij)
13
14 * Add a "dulwich.contrib.diffstat" module.
15   (Kevin Hendricks)
16
170.19.15	2020-01-26
18
19 * Properly handle files that are just executable for the
20   current user. (Jelmer Vernooij, #734)
21
22 * Fix handling of stored encoding in
23   ``dulwich.porcelain.get_object_by_path`` on Python 3.
24   (Jelmer Vernooij)
25
26 * Support the include_trees and rename_detector arguments
27   at the same time when diffing trees.
28   (Jelmer Vernooij)
29
300.19.14	2019-11-30
31
32 * Strip superfluous <> around email. (monnerat)
33
34 * Stop checking for ref validity client-side. Users can
35   still call check_wants manually. (Jelmer Vernooij)
36
37 * Switch over to Google-style docstrings.
38   (Jelmer Vernooij)
39
40 * Add a ``dulwich.porcelain.active_branch`` function.
41   (Jelmer Vernooij)
42
43 * Cleanup new directory if clone fails. (Jelmer Vernooij, #733)
44
45 * Expand "~" in global exclude path. (Jelmer Vernooij)
46
470.19.13	2019-08-19
48
49 BUG FIXES
50
51 * Avoid ``PermissionError``, since it is Python3-specific.
52  (Jelmer Vernooij)
53
54 * Fix regression that added a dependency on C git for the
55   test suite. (Jelmer Vernooij, #720)
56
57 * Fix compatibility with Python 3.8 - mostly deprecation warnings.
58   (Jelmer Vernooij)
59
600.19.12	2019-08-13
61
62 BUG FIXES
63
64 * Update directory detection for `get_unstaged_changes` for Python 3.
65   (Boris Feld, #684)
66
67 * Add a basic ``porcelain.clean``. (Lane Barlow, #398)
68
69 * Fix output format of ``porcelain.diff`` to match that of
70   C Git. (Boris Feld)
71
72 * Return a 404 not found error when repository is not found.
73
74 * Mark ``.git`` directories as hidden on Windows.
75   (Martin Packman, #585)
76
77 * Implement ``RefsContainer.__iter__``
78   (Jelmer Vernooij, #717)
79
80 * Don't trust modes if they can't be modified after a file has been created.
81   (Jelmer Vernooij, #719)
82
830.19.11	2019-02-07
84
85 IMPROVEMENTS
86
87 * Use fullname from gecos field, if available.
88   (Jelmer Vernooij)
89
90 * Support ``GIT_AUTHOR_NAME`` / ``GIT_AUTHOR_EMAIL``.
91   (Jelmer Vernooij)
92
93 * Add support for short ids in parse_commit. (Jelmer Vernooij)
94
95 * Add support for ``prune`` and ``prune_tags`` arguments
96   to ``porcelain.fetch``. (Jelmer Vernooij, #681)
97
98 BUG FIXES
99
100  * Fix handling of race conditions when new packs appear.
101    (Jelmer Vernooij)
102
1030.19.10	2018-01-15
104
105 IMPROVEMENTS
106
107 * Add `dulwich.porcelain.write_tree`.
108   (Jelmer Vernooij)
109
110 * Support reading ``MERGE_HEADS`` in ``Repo.do_commit``.
111   (Jelmer Vernooij)
112
113 * Import from ``collections.abc`` rather than ``collections`` where
114   applicable. Required for 3.8 compatibility.
115   (Jelmer Vernooij)
116
117 * Support plain strings as refspec arguments to
118   ``dulwich.porcelain.push``. (Jelmer Vernooij)
119
120 * Add support for creating signed tags.
121   (Jelmer Vernooij, #542)
122
123 BUG FIXES
124
125 *  Handle invalid ref that pretends to be a sub-folder under a valid ref.
126    (KS Chan)
127
1280.19.9	2018-11-17
129
130 BUG FIXES
131
132 * Avoid fetching ghosts in ``Repo.fetch``.
133   (Jelmer Vernooij)
134
135 * Preserve port and username in parsed HTTP URLs.
136   (Jelmer Vernooij)
137
138 * Add basic server side implementation of ``git-upload-archive``.
139   (Jelmer Vernooij)
140
1410.19.8	2018-11-06
142
143 * Fix encoding when reading README file in setup.py.
144   (egor <egor@sourced.tech>, #668)
145
1460.19.7	2018-11-05
147
148 CHANGES
149
150  * Drop support for Python 3 < 3.4. This is because
151    pkg_resources (which get used by setuptools and mock)
152    no longer supports 3.3 and earlier. (Jelmer Vernooij)
153
154 IMPROVEMENTS
155
156  * Support ``depth`` argument to ``GitClient.fetch_pack`` and support
157    fetching and updating shallow metadata. (Jelmer Vernooij, #240)
158
159 BUG FIXES
160
161  * Don't write to stdout and stderr when they are not available
162    (such as is the case for pythonw). (Sylvia van Os, #652)
163
164  * Fix compatibility with newer versions of git, which expect CONTENT_LENGTH
165    to be set to 0 for empty body requests. (Jelmer Vernooij, #657)
166
167  * Raise an exception client-side when a caller tries to request
168    SHAs that are not directly referenced the servers' refs.
169    (Jelmer Vernooij)
170
171  * Raise more informative errors when unable to connect to repository
172    over SSH or subprocess. (Jelmer Vernooij)
173
174  * Handle commit identity fields with multiple ">" characters.
175    (Nicolas Dandrimont)
176
177 IMPROVEMENTS
178
179  * ``dulwich.porcelain.get_object_by_path`` method for easily
180    accessing a path in another tree. (Jelmer Vernooij)
181
182  * Support the ``i18n.commitEncoding`` setting in config.
183    (Jelmer Vernooij)
184
1850.19.6	2018-08-11
186
187 BUG FIXES
188
189  * Fix support for custom transport arguments in ``dulwich.porcelain.clone``.
190    (Semyon Slepov)
191
192  * Fix compatibility with Python 3.8 (Jelmer Vernooij, Daniel M. Capella)
193
194  * Fix some corner cases in ``path_to_tree_path``. (Romain Keramitas)
195
196  * Support paths as bytestrings in various places in ``dulwich.index``
197    (Jelmer Vernooij)
198
199  * Avoid setup.cfg for now, since it seems to break pypi metadata.
200    (Jelmer Vernooij, #658)
201
2020.19.5	2018-07-08
203
204 IMPROVEMENTS
205
206  * Add ``porcelain.describe``. (Sylvia van Os)
207
208 BUG FIXES
209
210  * Fix regression in ``dulwich.porcelain.clone`` that prevented cloning
211    of remote repositories. (Jelmer Vernooij, #639)
212
213  * Don't leave around empty parent directories for removed refs.
214    (Damien Tournoud, #640)
215
2160.19.4	2018-06-24
217
218 IMPROVEMENTS
219
220  * Add ``porcelain.ls_files``. (Jelmer Vernooij)
221
222  * Add ``Index.items``. (Jelmer Vernooij)
223
224 BUG FIXES
225
226  * Avoid unicode characters (e.g. the digraph ij in my surname) in setup.cfg,
227    since setuptools doesn't deal well with them. See
228    https://github.com/pypa/setuptools/issues/1062. (Jelmer Vernooij, #637)
229
2300.19.3	2018-06-17
231
232 IMPROVEMENTS
233
234  * Add really basic `dulwich.porcelain.fsck` implementation.
235    (Jelmer Vernooij)
236
237  * When the `DULWICH_PDB` environment variable is set, make
238    SIGQUIT open pdb in the 'dulwich' command.
239
240  * Add `checkout` argument to `Repo.clone`.
241    (Jelmer Vernooij, #503)
242
243  * Add `Repo.get_shallow` method. (Jelmer Vernooij)
244
245  * Add basic `dulwich.stash` module. (Jelmer Vernooij)
246
247  * Support a `prefix` argument to `dulwich.archive.tar_stream`.
248    (Jelmer Vernooij)
249
250 BUG FIXES
251
252  * Fix handling of encoding for tags. (Jelmer Vernooij, #608)
253
254  * Fix tutorial tests on Python 3. (Jelmer Vernooij, #573)
255
256  * Fix remote refs created by `porcelain.fetch`. (Daniel Andersson, #623)
257
258  * More robust pack creation on Windows. (Daniel Andersson)
259
260  * Fix recursive option for `porcelain.ls_tree`. (Romain Keramitas)
261
262 TESTS
263
264  * Some improvements to paramiko tests. (Filipp Frizzy)
265
2660.19.2	2018-04-07
267
268 BUG FIXES
269
270  * Fix deprecated Index.iterblobs method.
271    (Jelmer Vernooij)
272
2730.19.1	2018-04-05
274
275 IMPROVEMENTS
276
277  * Add 'dulwich.mailmap' file for reading mailmap files.
278    (Jelmer Vernooij)
279
280  * Dulwich no longer depends on urllib3[secure]. Instead,
281    "dulwich[https]" can be used to pull in the necessary
282    dependencies for HTTPS support. (Jelmer Vernooij, #616)
283
284  * Support the `http.sslVerify` and `http.sslCAInfo`
285    configuration options. (Jelmer Vernooij)
286
287  * Factor out `dulwich.client.parse_rsync_url` function.
288    (Jelmer Vernooij)
289
290  * Fix repeat HTTP requests using the same smart HTTP client.
291    (Jelmer Vernooij)
292
293  * New 'client.PLinkSSHVendor' for creating connections using PuTTY's plink.exe.
294    (Adam Bradley, Filipp Frizzy)
295
296  * Only pass in `key_filename` and `password` to SSHVendor
297    implementations if those parameters are set.
298    (This helps with older SSHVendor implementations)
299    (Jelmer Vernooij)
300
301 API CHANGES
302
303  * Index.iterblobs has been renamed to Index.iterobjects.
304    (Jelmer Vernooij)
305
3060.19.0	2018-03-10
307
308 BUG FIXES
309
310  * Make `dulwich.archive` set the gzip header file modification time so that
311    archives created from the same Git tree are always identical.
312    (#577, Jonas Haag)
313
314  * Allow comment characters (#, ;) within configuration file strings
315    (Daniel Andersson, #579)
316
317  * Raise exception when passing in invalid author/committer values
318    to Repo.do_commit(). (Jelmer Vernooij, #602)
319
320 IMPROVEMENTS
321
322  * Add a fastimport ``extra``. (Jelmer Vernooij)
323
324  * Start writing reflog entries. (Jelmer Vernooij)
325
326  * Add ability to use password and keyfile ssh options with SSHVendor. (Filipp Kucheryavy)
327
328  * Add ``change_type_same`` flag to ``tree_changes``.
329    (Jelmer Vernooij)
330
331 API CHANGES
332
333  * ``GitClient.send_pack`` now accepts a ``generate_pack_data``
334    rather than a ``generate_pack_contents`` function for
335    performance reasons. (Jelmer Vernooij)
336
337  * Dulwich now uses urllib3 internally for HTTP requests.
338    The `opener` argument to `dulwich.client.HttpGitClient` that took a
339    `urllib2` opener instance has been replaced by a `pool_manager` argument
340    that takes a `urllib3` pool manager instance.
341    (Daniel Andersson)
342
3430.18.6	2017-11-11
344
345 BUG FIXES
346
347  * Fix handling of empty repositories in ``porcelain.clone``.
348    (#570, Jelmer Vernooij)
349
350  * Raise an error when attempting to add paths that are not under the
351    repository. (Jelmer Vernooij)
352
353  * Fix error message for missing trailing ]. (Daniel Andersson)
354
355  * Raise EmptyFileException when corruption (in the form of an empty
356    file) is detected. (Antoine R. Dumont, #582)
357
358  IMPROVEMENTS
359
360  * Enforce date field parsing consistency. This also add checks on
361    those date fields for potential overflow.
362    (Antoine R. Dumont, #567)
363
3640.18.5	2017-10-29
365
366 BUG FIXES
367
368  * Fix cwd for hooks. (Fabian Grünbichler)
369
370  * Fix setting of origin in config when non-standard origin is passed into
371    ``Repo.clone``. (Kenneth Lareau, #565)
372
373  * Prevent setting SSH arguments from SSH URLs when using SSH through a
374    subprocess. Note that Dulwich doesn't support cloning submodules.
375    (CVE-2017-16228) (Jelmer Vernooij)
376
377 IMPROVEMENTS
378
379  * Silently ignored directories in ``Repo.stage``.
380    (Jelmer Vernooij, #564)
381
382 API CHANGES
383
384  * GitFile now raises ``FileLocked`` when encountering a lock
385    rather than OSError(EEXIST). (Jelmer Vernooij)
386
3870.18.4	2017-10-01
388
389 BUG FIXES
390
391  * Make default User-Agent start with "git/" because GitHub won't response to
392    HTTP smart server requests otherwise (and reply with a 404).
393    (Jelmer vernooij, #562)
394
3950.18.3	2017-09-03
396
397 BUG FIXES
398
399  * Read config during porcelain operations that involve remotes.
400    (Jelmer Vernooij, #545)
401
402  * Fix headers of empty chunks in unified diffs. (Taras Postument, #543)
403
404  * Properly follow redirects over HTTP. (Jelmer Vernooij, #117)
405
406 IMPROVEMENTS
407
408  * Add ``dulwich.porcelain.update_head``. (Jelmer Vernooij, #439)
409
410  * ``GitClient.fetch_pack`` now returns symrefs.
411    (Jelmer Vernooij, #485)
412
413  * The server now supports providing symrefs.
414    (Jelmer Vernooij, #485)
415
416  * Add ``dulwich.object_store.commit_tree_changes`` to incrementally
417    commit changes to a tree structure. (Jelmer Vernooij)
418
419  * Add basic ``PackBasedObjectStore.repack`` method.
420    (Jelmer Vernooij, Earl Chew, #296, #549, #552)
421
4220.18.2	2017-08-01
423
424 TEST FIXES
425
426  * Use constant timestamp so tests pass in all timezones, not just BST.
427    (Jelmer Vernooij)
428
4290.18.1	2017-07-31
430
431 BUG FIXES
432
433  * Fix syntax error in dulwich.contrib.test_swift_smoke.
434    (Jelmer Vernooij)
435
4360.18.0	2017-07-31
437
438 BUG FIXES
439
440  * Fix remaining tests on Windows. (Jelmer Vernooij, #493)
441
442  * Fix build of C extensions with Python 3 on Windows.
443    (Jelmer Vernooij)
444
445  * Pass 'mkdir' argument onto Repo.init_bare in Repo.clone.
446    (Jelmer Vernooij, #504)
447
448  * In ``dulwich.porcelain.add``, if no files are specified,
449    add from current working directory rather than repository root.
450    (Jelmer Vernooij, #521)
451
452  * Properly deal with submodules in 'porcelain.status'.
453    (Jelmer Vernooij, #517)
454
455  * ``dulwich.porcelain.remove`` now actually removes files from
456    disk, not just from the index. (Jelmer Vernooij, #488)
457
458  * Fix handling of "reset" command with markers and without
459    "from". (Antoine Pietri)
460
461  * Fix handling of "merge" command with markers. (Antoine Pietri)
462
463  * Support treeish argument to porcelain.reset(), rather than
464    requiring a ref/commit id. (Jelmer Vernooij)
465
466  * Handle race condition when mtime doesn't change between writes/reads.
467    (Jelmer Vernooij, #541)
468
469  * Fix ``dulwich.porcelain.show`` on commits with Python 3.
470    (Jelmer Vernooij, #532)
471
472 IMPROVEMENTS
473
474  * Add basic support for reading ignore files in ``dulwich.ignore``.
475    ``dulwich.porcelain.add`` and ``dulwich.porcelain.status`` now honor
476    ignores. (Jelmer Vernooij, Segev Finer, #524, #526)
477
478  * New ``dulwich.porcelain.check_ignore`` command.
479    (Jelmer Vernooij)
480
481  * ``dulwich.porcelain.status`` now supports a ``ignored`` argument.
482    (Jelmer Vernooij)
483
484 DOCUMENTATION
485
486  * Clarified docstrings for Client.{send_pack,fetch_pack} implementations.
487    (Jelmer Vernooij, #523)
488
4890.17.3	2017-03-20
490
491 PLATFORM SUPPORT
492
493  * List Python 3.3 as supported. (Jelmer Vernooij, #513)
494
495 BUG FIXES
496
497  * Fix compatibility with pypy 3. (Jelmer Vernooij)
498
4990.17.2	2017-03-19
500
501 BUG FIXES
502
503  * Add workaround for
504    https://bitbucket.org/pypy/pypy/issues/2499/cpyext-pystring_asstring-doesnt-work,
505    fixing Dulwich when used with C extensions on pypy < 5.6. (Victor Stinner)
506
507  * Properly quote config values with a '#' character in them.
508    (Jelmer Vernooij, #511)
509
5100.17.1	2017-03-01
511
512 IMPROVEMENTS
513
514  * Add basic 'dulwich pull' command. (Jelmer Vernooij)
515
516 BUG FIXES
517
518  * Cope with existing submodules during pull.
519    (Jelmer Vernooij, #505)
520
5210.17.0	2017-03-01
522
523 TEST FIXES
524
525  * Skip test that requires sync to synchronize filesystems if os.sync is
526    not available. (Koen Martens)
527
528 IMPROVEMENTS
529
530  * Implement MemoryRepo.{set_description,get_description}.
531    (Jelmer Vernooij)
532
533  * Raise exception in Repo.stage() when absolute paths are
534    passed in. Allow passing in relative paths to
535    porcelain.add().(Jelmer Vernooij)
536
537 BUG FIXES
538
539  * Handle multi-line quoted values in config files.
540    (Jelmer Vernooij, #495)
541
542  * Allow porcelain.clone of repository without HEAD.
543    (Jelmer Vernooij, #501)
544
545  * Support passing tag ids to Walker()'s include argument.
546    (Jelmer Vernooij)
547
548  * Don't strip trailing newlines from extra headers.
549    (Nicolas Dandrimont)
550
551  * Set bufsize=0 for subprocess interaction with SSH client.
552    Fixes hangs on Python 3. (René Stern, #434)
553
554  * Don't drop first slash for SSH paths, except for those
555    starting with "~". (Jelmer Vernooij, René Stern, #463)
556
557  * Properly log off after retrieving just refs.
558    (Jelmer Vernooij)
559
5600.16.3	2016-01-14
561
562 TEST FIXES
563
564  * Remove racy check that relies on clock time changing between writes.
565    (Jelmer Vernooij)
566
567 IMPROVEMENTS
568
569  * Add porcelain.remote_add. (Jelmer Vernooij)
570
5710.16.2	2016-01-14
572
573 IMPROVEMENTS
574
575  * Fixed failing test-cases on windows.
576    (Koen Martens)
577
578 API CHANGES
579
580  * Repo is now a context manager, so that it can be easily
581    closed using a ``with`` statement. (Søren Løvborg)
582
583 TEST FIXES
584
585  * Only run worktree list compat tests against git 2.7.0,
586    when 'git worktree list' was introduced. (Jelmer Vernooij)
587
588 BUG FIXES
589
590  * Ignore filemode when building index when core.filemode
591    is false.
592    (Koen Martens)
593
594  * Initialize core.filemode configuration setting by
595    probing the filesystem for trustable permissions.
596    (Koen Martens)
597
598  * Fix ``porcelain.reset`` to respect the comittish argument.
599    (Koen Martens)
600
601  * Fix dulwich.porcelain.ls_remote() on Python 3.
602    (#471, Jelmer Vernooij)
603
604  * Allow both unicode and byte strings for host paths
605    in dulwich.client. (#435, Jelmer Vernooij)
606
607  * Add remote from porcelain.clone. (#466, Jelmer Vernooij)
608
609  * Fix unquoting of credentials before passing to urllib2.
610    (#475, Volodymyr Holovko)
611
612  * Cope with submodules in `build_index_from_tree`.
613    (#477, Jelmer Vernooij)
614
615  * Handle deleted files in `get_unstaged_changes`.
616    (#483, Doug Hellmann)
617
618  * Don't overwrite files when they haven't changed in
619    `build_file_from_blob`.
620    (#479, Benoît HERVIER)
621
622  * Check for existence of index file before opening pack.
623    Fixes a race when new packs are being added.
624    (#482, wme)
625
6260.16.1	2016-12-25
627
628 BUG FIXES
629
630  * Fix python3 compatibility for dulwich.contrib.release_robot.
631    (Jelmer Vernooij)
632
6330.16.0	2016-12-24
634
635 IMPROVEMENTS
636
637  * Add support for worktrees. See `git-worktree(1)` and
638    `gitrepository-layout(5)`. (Laurent Rineau)
639
640  * Add support for `commondir` file in Git control
641    directories. (Laurent Rineau)
642
643  * Add support for passwords in HTTP URLs.
644    (Jon Bain, Mika Mäenpää)
645
646  * Add `release_robot` script to contrib,
647    allowing easy finding of current version based on Git tags.
648    (Mark Mikofski)
649
650  * Add ``Blob.splitlines`` method.
651    (Jelmer Vernooij)
652
653 BUG FIXES
654
655  * Fix handling of ``Commit.tree`` being set to an actual
656    tree object rather than a tree id. (Jelmer Vernooij)
657
658  * Return remote refs from LocalGitClient.fetch_pack(),
659    consistent with the documentation for that method.
660    (#461, Jelmer Vernooij)
661
662  * Fix handling of unknown URL schemes in get_transport_and_path.
663    (#465, Jelmer Vernooij)
664
6650.15.0	2016-10-09
666
667 BUG FIXES
668
669  * Allow missing trailing LF when reading service name from
670    HTTP servers. (Jelmer Vernooij, Andrew Shadura, #442)
671
672  * Fix dulwich.porcelain.pull() on Python3. (Jelmer Vernooij, #451)
673
674  * Properly pull in tags during dulwich.porcelain.clone.
675    (Jelmer Vernooij, #408)
676
677 CHANGES
678
679  * Changed license from "GNU General Public License, version 2.0 or later"
680    to "Apache License, version 2.0 or later or GNU General Public License,
681    version 2.0 or later". (#153)
682
683 IMPROVEMENTS
684
685  * Add ``dulwich.porcelain.ls_tree`` implementation. (Jelmer Vernooij)
686
6870.14.1	2016-07-05
688
689 BUG FIXES
690
691  * Fix regression removing untouched refs when pushing over SSH.
692    (Jelmer Vernooij #441)
693
694  * Skip Python3 tests for SWIFT contrib module, as it has not yet
695    been ported.
696
6970.14.0	2016-07-03
698
699 BUG FIXES
700
701  * Fix ShaFile.id after modification of a copied ShaFile.
702    (Félix Mattrat, Jelmer Vernooij)
703
704  * Support removing refs from porcelain.push.
705    (Jelmer Vernooij, #437)
706
707  * Stop magic protocol ref `capabilities^{}` from leaking out
708    to clients. (Jelmer Vernooij, #254)
709
710 IMPROVEMENTS
711
712  * Add `dulwich.config.parse_submodules` function.
713
714  * Add `RefsContainer.follow` method. (#438)
715
7160.13.0	2016-04-24
717
718 IMPROVEMENTS
719
720  * Support `ssh://` URLs in get_transport_and_path_from_url().
721    (Jelmer Vernooij, #402)
722
723  * Support missing empty line after headers in Git commits and tags.
724    (Nicolas Dandrimont, #413)
725
726  * Fix `dulwich.porcelain.status` when used in empty trees.
727    (Jelmer Vernooij, #415)
728
729  * Return copies of objects in MemoryObjectStore rather than
730    references, making the behaviour more consistent with that of
731    DiskObjectStore. (Félix Mattrat, Jelmer Vernooij)
732
733  * Fix ``dulwich.web`` on Python3. (#295, Jonas Haag)
734
735 CHANGES
736
737  * Drop support for Python 2.6.
738
739  * Fix python3 client web support. (Jelmer Vernooij)
740
741 BUG FIXES
742
743  * Fix hang on Gzip decompression. (Jonas Haag)
744
745  * Don't rely on working tell() and seek() methods
746    on wsgi.input. (Jonas Haag)
747
748  * Support fastexport/fastimport functionality on python3 with newer
749    versions of fastimport (>= 0.9.5). (Jelmer Vernooij, Félix Mattrat)
750
7510.12.0	2015-12-13
752
753 IMPROVEMENTS
754
755  * Add a `dulwich.archive` module that can create tarballs.
756    Based on code from Jonas Haag in klaus.
757
758  * Add a `dulwich.reflog` module for reading and writing reflogs.
759    (Jelmer Vernooij)
760
761  * Fix handling of ambiguous refs in `parse_ref` to make
762    it match the behaviour described in https://git-scm.com/docs/gitrevisions.
763    (Chris Bunney)
764
765  * Support Python3 in C modules. (Lele Gaifax)
766
767 BUG FIXES
768
769  * Simplify handling of SSH command invocation.
770    Fixes quoting of paths. Thanks, Thomas Liebetraut. (#384)
771
772  * Fix inconsistent handling of trailing slashes for DictRefsContainer. (#383)
773
774  * Add hack to support thin packs duing fetch(), albeit while requiring the
775    entire pack file to be loaded into memory. (jsbain)
776
777 CHANGES
778
779  * This will be the last release to support Python 2.6.
780
7810.11.2	2015-09-18
782
783 IMPROVEMENTS
784
785  * Add support for agent= capability. (Jelmer Vernooij, #298)
786
787  * Add support for quiet capability. (Jelmer Vernooij)
788
789 CHANGES
790
791  * The ParamikoSSHVendor class has been moved to
792  * dulwich.contrib.paramiko_vendor, as it's currently untested.
793    (Jelmer Vernooij, #364)
794
7950.11.1	2015-09-13
796
797 Fix-up release to exclude broken blame.py file.
798
7990.11.0	2015-09-13
800
801 IMPROVEMENTS
802
803  * Extended Python3 support to most of the codebase.
804    (Gary van der Merwe, Jelmer Vernooij)
805  * The `Repo` object has a new `close` method that can be called to close any
806    open resources. (Gary van der Merwe)
807  * Support 'git.bat' in SubprocessGitClient on Windows.
808    (Stefan Zimmermann)
809  * Advertise 'ofs-delta' capability in receive-pack server side
810    capabilities. (Jelmer Vernooij)
811  * Switched `default_local_git_client_cls` to `LocalGitClient`.
812    (Gary van der Merwe)
813  * Add `porcelain.ls_remote` and `GitClient.get_refs`.
814    (Michael Edgar)
815  * Add `Repo.discover` method. (B. M. Corser)
816  * Add `dulwich.objectspec.parse_refspec`. (Jelmer Vernooij)
817  * Add `porcelain.pack_objects` and `porcelain.repack`.
818    (Jelmer Vernooij)
819
820 BUG FIXES
821
822  * Fix handling of 'done' in graph walker and implement the
823    'no-done' capability. (Tommy Yu, #88)
824
825  * Avoid recursion limit issues resolving deltas. (William Grant, #81)
826
827  * Allow arguments in local client binary path overrides.
828    (Jelmer Vernooij)
829
830  * Fix handling of commands with arguments in paramiko SSH
831    client. (Andreas Klöckner, Jelmer Vernooij, #363)
832
833  * Fix parsing of quoted strings in configs. (Jelmer Vernooij, #305)
834
8350.10.1  2015-03-25
836
837 BUG FIXES
838
839  * Return `ApplyDeltaError` when encountering delta errors
840    in both C extensions and native delta application code.
841    (Jelmer Vernooij, #259)
842
8430.10.0	2015-03-22
844
845 BUG FIXES
846
847  * In dulwich.index.build_index_from_tree, by default
848    refuse to create entries that start with .git/.
849
850  * Fix running of testsuite when installed.
851    (Jelmer Vernooij, #223)
852
853  * Use a block cache in _find_content_rename_candidates(),
854    improving performance. (Mike Williams)
855
856  * Add support for ``core.protectNTFS`` setting.
857    (Jelmer Vernooij)
858
859  * Fix TypeError when fetching empty updates.
860    (Hwee Miin Koh)
861
862  * Resolve delta refs when pulling into a MemoryRepo.
863    (Max Shawabkeh, #256)
864
865  * Fix handling of tags of non-commits in missing object finder.
866    (Augie Fackler, #211)
867
868  * Explicitly disable mmap on plan9 where it doesn't work.
869    (Jeff Sickel)
870
871 IMPROVEMENTS
872
873  * New public method `Repo.reset_index`. (Jelmer Vernooij)
874
875  * Prevent duplicate parsing of loose files in objects
876    directory when reading. Thanks to David Keijser for the
877    report. (Jelmer Vernooij, #231)
878
8790.9.9	2015-03-20
880
881 SECURITY BUG FIXES
882
883  * Fix buffer overflow in C implementation of pack apply_delta().
884    (CVE-2015-0838)
885
886    Thanks to Ivan Fratric of the Google Security Team for
887    reporting this issue.
888    (Jelmer Vernooij)
889
8900.9.8	2014-11-30
891
892 BUG FIXES
893
894  * Various fixes to improve test suite running on Windows.
895    (Gary van der Merwe)
896
897  * Limit delta copy length to 64K in v2 pack files. (Robert Brown)
898
899  * Strip newline from final ACKed SHA while fetching packs.
900    (Michael Edgar)
901
902  * Remove assignment to PyList_SIZE() that was causing segfaults on
903    pypy. (Jelmer Vernooij, #196)
904
905 IMPROVEMENTS
906
907  * Add porcelain 'receive-pack' and 'upload-pack'. (Jelmer Vernooij)
908
909  * Handle SIGINT signals in bin/dulwich. (Jelmer Vernooij)
910
911  * Add 'status' support to bin/dulwich. (Jelmer Vernooij)
912
913  * Add 'branch_create', 'branch_list', 'branch_delete' porcelain.
914    (Jelmer Vernooij)
915
916  * Add 'fetch' porcelain. (Jelmer Vernooij)
917
918  * Add 'tag_delete' porcelain. (Jelmer Vernooij)
919
920  * Add support for serializing/deserializing 'gpgsig' attributes in Commit.
921    (Jelmer Vernooij)
922
923 CHANGES
924
925  * dul-web is now available as 'dulwich web-daemon'.
926    (Jelmer Vernooij)
927
928  * dulwich.porcelain.tag has been renamed to tag_create.
929    dulwich.porcelain.list_tags has been renamed to tag_list.
930    (Jelmer Vernooij)
931
932 API CHANGES
933
934  * Restore support for Python 2.6. (Jelmer Vernooij, Gary van der Merwe)
935
936
9370.9.7	2014-06-08
938
939 BUG FIXES
940
941  * Fix tests dependent on hash ordering. (Michael Edgar)
942
943  * Support staging symbolic links in Repo.stage.
944    (Robert Brown)
945
946  * Ensure that all files object are closed when running the test suite.
947    (Gary van der Merwe)
948
949  * When writing OFS_DELTA pack entries, write correct offset.
950    (Augie Fackler)
951
952  * Fix handler of larger copy operations in packs. (Augie Fackler)
953
954  * Various fixes to improve test suite running on Windows.
955    (Gary van der Merwe)
956
957  * Fix logic for extra adds of identical files in rename detector.
958    (Robert Brown)
959
960 IMPROVEMENTS
961
962  * Add porcelain 'status'. (Ryan Faulkner)
963
964  * Add porcelain 'daemon'. (Jelmer Vernooij)
965
966  * Add `dulwich.greenthreads` module which provides support
967    for concurrency of some object store operations.
968    (Fabien Boucher)
969
970  * Various changes to improve compatibility with Python 3.
971    (Gary van der Merwe, Hannu Valtonen, michael-k)
972
973  * Add OpenStack Swift backed repository implementation
974    in dulwich.contrib. See README.swift for details. (Fabien Boucher)
975
976API CHANGES
977
978  * An optional close function can be passed to the Protocol class. This will
979    be called by its close method. (Gary van der Merwe)
980
981  * All classes with close methods are now context managers, so that they can
982    be easily closed using a `with` statement. (Gary van der Merwe)
983
984  * Remove deprecated `num_objects` argument to `write_pack` methods.
985    (Jelmer Vernooij)
986
987 OTHER CHANGES
988
989  * The 'dul-daemon' script has been removed. The same functionality
990    is now available as 'dulwich daemon'. (Jelmer Vernooij)
991
9920.9.6	2014-04-23
993
994 IMPROVEMENTS
995
996  * Add support for recursive add in 'git add'.
997    (Ryan Faulkner, Jelmer Vernooij)
998
999  * Add porcelain 'list_tags'. (Ryan Faulkner)
1000
1001  * Add porcelain 'push'. (Ryan Faulkner)
1002
1003  * Add porcelain 'pull'. (Ryan Faulkner)
1004
1005  * Support 'http.proxy' in HttpGitClient.
1006    (Jelmer Vernooij, #1096030)
1007
1008  * Support 'http.useragent' in HttpGitClient.
1009    (Jelmer Vernooij)
1010
1011  * In server, wait for clients to send empty list of
1012    wants when talking to empty repository.
1013    (Damien Tournoud)
1014
1015  * Various changes to improve compatibility with
1016    Python 3. (Gary van der Merwe)
1017
1018 BUG FIXES
1019
1020  * Support unseekable 'wsgi.input' streams.
1021    (Jonas Haag)
1022
1023  * Raise TypeError when passing unicode() object
1024    to Repo.__getitem__.
1025    (Jonas Haag)
1026
1027  * Fix handling of `reset` command in dulwich.fastexport.
1028    (Jelmer Vernooij, #1249029)
1029
1030  * In client, don't wait for server to close connection
1031    first. Fixes hang when used against GitHub
1032    server implementation. (Siddharth Agarwal)
1033
1034  * DeltaChainIterator: fix a corner case where an object is inflated as an
1035    object already in the repository.
1036    (Damien Tournoud, #135)
1037
1038  * Stop leaking file handles during pack reload. (Damien Tournoud)
1039
1040  * Avoid reopening packs during pack cache reload. (Jelmer Vernooij)
1041
1042 API CHANGES
1043
1044  * Drop support for Python 2.6. (Jelmer Vernooij)
1045
10460.9.5	2014-02-23
1047
1048 IMPROVEMENTS
1049
1050  * Add porcelain 'tag'. (Ryan Faulkner)
1051
1052  * New module `dulwich.objectspec` for parsing strings referencing
1053    objects and commit ranges. (Jelmer Vernooij)
1054
1055  * Add shallow branch support. (milki)
1056
1057  * Allow passing urllib2 `opener` into HttpGitClient.
1058    (Dov Feldstern, #909037)
1059
1060 CHANGES
1061
1062  * Drop support for Python 2.4 and 2.5. (Jelmer Vernooij)
1063
1064 API CHANGES
1065
1066  * Remove long deprecated ``Repo.commit``, ``Repo.get_blob``,
1067    ``Repo.tree`` and ``Repo.tag``. (Jelmer Vernooij)
1068
1069  * Remove long deprecated ``Repo.revision_history`` and ``Repo.ref``.
1070    (Jelmer Vernooij)
1071
1072  * Remove long deprecated ``Tree.entries``. (Jelmer Vernooij)
1073
1074 BUG FIXES
1075
1076  * Raise KeyError rather than TypeError when passing in
1077    unicode object of length 20 or 40 to Repo.__getitem__.
1078    (Jelmer Vernooij)
1079
1080  * Use 'rm' rather than 'unlink' in tests, since the latter
1081    does not exist on OpenBSD and other platforms.
1082    (Dmitrij D. Czarkoff)
1083
10840.9.4	2013-11-30
1085
1086 IMPROVEMENTS
1087
1088  * Add ssh_kwargs attribute to ParamikoSSHVendor. (milki)
1089
1090  * Add Repo.set_description(). (Víðir Valberg Guðmundsson)
1091
1092  * Add a basic `dulwich.porcelain` module. (Jelmer Vernooij, Marcin Kuzminski)
1093
1094  * Various performance improvements for object access.
1095    (Jelmer Vernooij)
1096
1097  * New function `get_transport_and_path_from_url`,
1098    similar to `get_transport_and_path` but only
1099    supports URLs.
1100    (Jelmer Vernooij)
1101
1102  * Add support for file:// URLs in `get_transport_and_path_from_url`.
1103    (Jelmer Vernooij)
1104
1105  * Add LocalGitClient implementation.
1106    (Jelmer Vernooij)
1107
1108 BUG FIXES
1109
1110  * Support filesystems with 64bit inode and device numbers.
1111    (André Roth)
1112
1113 CHANGES
1114
1115  * Ref handling has been moved to dulwich.refs.
1116    (Jelmer Vernooij)
1117
1118 API CHANGES
1119
1120  * Remove long deprecated RefsContainer.set_ref().
1121    (Jelmer Vernooij)
1122
1123  * Repo.ref() is now deprecated in favour of Repo.refs[].
1124    (Jelmer Vernooij)
1125
1126FEATURES
1127
1128  * Add support for graftpoints. (milki)
1129
11300.9.3	2013-09-27
1131
1132 BUG FIXES
1133
1134  * Fix path for stdint.h in MANIFEST.in. (Jelmer Vernooij)
1135
11360.9.2	2013-09-26
1137
1138 BUG FIXES
1139
1140  * Include stdint.h in MANIFEST.in (Mark Mikofski)
1141
11420.9.1	2013-09-22
1143
1144 BUG FIXES
1145
1146  * Support lookups of 40-character refs in BaseRepo.__getitem__. (Chow Loong Jin, Jelmer Vernooij)
1147
1148  * Fix fetching packs with side-band-64k capability disabled. (David Keijser, Jelmer Vernooij)
1149
1150  * Several fixes in send-pack protocol behaviour - handling of empty pack files and deletes.
1151    (milki, #1063087)
1152
1153  * Fix capability negotiation when fetching packs over HTTP.
1154    (#1072461, William Grant)
1155
1156  * Enforce determine_wants returning an empty list rather than None. (Fabien Boucher, Jelmer Vernooij)
1157
1158  * In the server, support pushes just removing refs. (Fabien Boucher, Jelmer Vernooij)
1159
1160 IMPROVEMENTS
1161
1162  * Support passing a single revision to BaseRepo.get_walker() rather than a list of revisions.
1163    (Alberto Ruiz)
1164
1165  * Add `Repo.get_description` method. (Jelmer Vernooij)
1166
1167  * Support thin packs in Pack.iterobjects() and Pack.get_raw().
1168    (William Grant)
1169
1170  * Add `MemoryObjectStore.add_pack` and `MemoryObjectStore.add_thin_pack` methods.
1171    (David Bennett)
1172
1173  * Add paramiko-based SSH vendor. (Aaron O'Mullan)
1174
1175  * Support running 'dulwich.server' and 'dulwich.web' using 'python -m'.
1176    (Jelmer Vernooij)
1177
1178  * Add ObjectStore.close(). (Jelmer Vernooij)
1179
1180  * Raise appropriate NotImplementedError when encountering dumb HTTP servers.
1181    (Jelmer Vernooij)
1182
1183 API CHANGES
1184
1185  * SSHVendor.connect_ssh has been renamed to SSHVendor.run_command.
1186    (Jelmer Vernooij)
1187
1188  * ObjectStore.add_pack() now returns a 3-tuple. The last element will be an
1189    abort() method that can be used to cancel the pack operation.
1190    (Jelmer Vernooij)
1191
11920.9.0	2013-05-31
1193
1194 BUG FIXES
1195
1196  * Push efficiency - report missing objects only. (#562676, Artem Tikhomirov)
1197
1198  * Use indentation consistent with C Git in config files.
1199    (#1031356, Curt Moore, Jelmer Vernooij)
1200
1201  * Recognize and skip binary files in diff function.
1202    (Takeshi Kanemoto)
1203
1204  * Fix handling of relative paths in dulwich.client.get_transport_and_path.
1205    (Brian Visel, #1169368)
1206
1207  * Preserve ordering of entries in configuration.
1208    (Benjamin Pollack)
1209
1210  * Support ~ expansion in SSH client paths. (milki, #1083439)
1211
1212  * Support relative paths in alternate paths.
1213    (milki, Michel Lespinasse, #1175007)
1214
1215  * Log all error messages from wsgiref server to the logging module. This
1216    makes the test suit quiet again. (Gary van der Merwe)
1217
1218  * Support passing None for empty tree in changes_from_tree.
1219    (Kevin Watters)
1220
1221  * Support fetching empty repository in client. (milki, #1060462)
1222
1223 IMPROVEMENTS:
1224
1225  * Add optional honor_filemode flag to build_index_from_tree.
1226    (Mark Mikofski)
1227
1228  * Support core/filemode setting when building trees. (Jelmer Vernooij)
1229
1230  * Add chapter on tags in tutorial. (Ryan Faulkner)
1231
1232 FEATURES
1233
1234  * Add support for mergetags. (milki, #963525)
1235
1236  * Add support for posix shell hooks. (milki)
1237
12380.8.7	2012-11-27
1239
1240 BUG FIXES
1241
1242  * Fix use of alternates in ``DiskObjectStore``.{__contains__,__iter__}.
1243    (Dmitriy)
1244
1245  * Fix compatibility with Python 2.4. (David Carr)
1246
12470.8.6	2012-11-09
1248
1249 API CHANGES
1250
1251  * dulwich.__init__ no longer imports client, protocol, repo and
1252    server modules. (Jelmer Vernooij)
1253
1254 FEATURES
1255
1256  * ConfigDict now behaves more like a dictionary.
1257    (Adam 'Cezar' Jenkins, issue #58)
1258
1259  * HTTPGitApplication now takes an optional
1260    `fallback_app` argument. (Jonas Haag, issue #67)
1261
1262  * Support for large pack index files. (Jameson Nash)
1263
1264 TESTING
1265
1266  * Make index entry tests a little bit less strict, to cope with
1267    slightly different behaviour on various platforms.
1268    (Jelmer Vernooij)
1269
1270  * ``setup.py test`` (available when setuptools is installed) now
1271    runs all tests, not just the basic unit tests.
1272    (Jelmer Vernooij)
1273
1274 BUG FIXES
1275
1276  * Commit._deserialize now actually deserializes the current state rather than
1277    the previous one. (Yifan Zhang, issue #59)
1278
1279  * Handle None elements in lists of TreeChange objects. (Alex Holmes)
1280
1281  * Support cloning repositories without HEAD set.
1282    (D-Key, Jelmer Vernooij, issue #69)
1283
1284  * Support ``MemoryRepo.get_config``. (Jelmer Vernooij)
1285
1286  * In ``get_transport_and_path``, pass extra keyword arguments on to
1287    HttpGitClient. (Jelmer Vernooij)
1288
12890.8.5	2012-03-29
1290
1291 BUG FIXES
1292
1293  * Avoid use of 'with' in dulwich.index. (Jelmer Vernooij)
1294
1295  * Be a little bit strict about OS behaviour in index tests.
1296    Should fix the tests on Debian GNU/kFreeBSD. (Jelmer Vernooij)
1297
12980.8.4	2012-03-28
1299
1300 BUG FIXES
1301
1302  * Options on the same line as sections in config files are now supported.
1303    (Jelmer Vernooij, #920553)
1304
1305  * Only negotiate capabilities that are also supported by the server.
1306    (Rod Cloutier, Risto Kankkunen)
1307
1308  * Fix parsing of invalid timezone offsets with two minus signs.
1309    (Jason R. Coombs, #697828)
1310
1311  * Reset environment variables during tests, to avoid
1312    test isolation leaks reading ~/.gitconfig. (Risto Kankkunen)
1313
1314 TESTS
1315
1316  * $HOME is now explicitly specified for tests that use it to read
1317    ``~/.gitconfig``, to prevent test isolation issues.
1318    (Jelmer Vernooij, #920330)
1319
1320 FEATURES
1321
1322  * Additional arguments to get_transport_and_path are now passed
1323    on to the constructor of the transport. (Sam Vilain)
1324
1325  * The WSGI server now transparently handles when a git client submits data
1326    using Content-Encoding: gzip.
1327    (David Blewett, Jelmer Vernooij)
1328
1329  * Add dulwich.index.build_index_from_tree(). (milki)
1330
13310.8.3	2012-01-21
1332
1333 FEATURES
1334
1335  * The config parser now supports the git-config file format as
1336    described in git-config(1) and can write git config files.
1337    (Jelmer Vernooij, #531092, #768687)
1338
1339  * ``Repo.do_commit`` will now use the user identity from
1340    .git/config or ~/.gitconfig if none was explicitly specified.
1341    (Jelmer Vernooij)
1342
1343 BUG FIXES
1344
1345  * Allow ``determine_wants`` methods to include the zero sha in their
1346    return value. (Jelmer Vernooij)
1347
13480.8.2	2011-12-18
1349
1350 BUG FIXES
1351
1352  * Cope with different zlib buffer sizes in sha1 file parser.
1353    (Jelmer Vernooij)
1354
1355  * Fix get_transport_and_path for HTTP/HTTPS URLs.
1356    (Bruno Renié)
1357
1358  * Avoid calling free_objects() on NULL in error cases. (Chris Eberle)
1359
1360  * Fix use --bare argument to 'dulwich init'. (Chris Eberle)
1361
1362  * Properly abort connections when the determine_wants function
1363    raises an exception. (Jelmer Vernooij, #856769)
1364
1365  * Tweak xcodebuild hack to deal with more error output.
1366    (Jelmer Vernooij, #903840)
1367
1368 FEATURES
1369
1370  * Add support for retrieving tarballs from remote servers.
1371    (Jelmer Vernooij, #379087)
1372
1373  * New method ``update_server_info`` which generates data
1374    for dumb server access. (Jelmer Vernooij, #731235)
1375
13760.8.1	2011-10-31
1377
1378 FEATURES
1379
1380  * Repo.do_commit has a new argument 'ref'.
1381
1382  * Repo.do_commit has a new argument 'merge_heads'. (Jelmer Vernooij)
1383
1384  * New ``Repo.get_walker`` method. (Jelmer Vernooij)
1385
1386  * New ``Repo.clone`` method. (Jelmer Vernooij, #725369)
1387
1388  * ``GitClient.send_pack`` now supports the 'side-band-64k' capability.
1389    (Jelmer Vernooij)
1390
1391  * ``HttpGitClient`` which supports the smart server protocol over
1392    HTTP. "dumb" access is not yet supported. (Jelmer Vernooij, #373688)
1393
1394  * Add basic support for alternates. (Jelmer Vernooij, #810429)
1395
1396 CHANGES
1397
1398  * unittest2 or python >= 2.7 is now required for the testsuite.
1399    testtools is no longer supported. (Jelmer Vernooij, #830713)
1400
1401 BUG FIXES
1402
1403  * Fix compilation with older versions of MSVC.  (Martin gz)
1404
1405  * Special case 'refs/stash' as a valid ref. (Jelmer Vernooij, #695577)
1406
1407  * Smart protocol clients can now change refs even if they are
1408    not uploading new data. (Jelmer Vernooij, #855993)
1409
1410  * Don't compile C extensions when running in pypy.
1411    (Ronny Pfannschmidt, #881546)
1412
1413  * Use different name for strnlen replacement function to avoid clashing
1414    with system strnlen. (Jelmer Vernooij, #880362)
1415
1416 API CHANGES
1417
1418  * ``Repo.revision_history`` is now deprecated in favor of ``Repo.get_walker``.
1419    (Jelmer Vernooij)
1420
14210.8.0	2011-08-07
1422
1423 FEATURES
1424
1425  * New DeltaChainIterator abstract class for quickly iterating all objects in
1426    a pack, with implementations for pack indexing and inflation.
1427    (Dave Borowitz)
1428
1429  * New walk module with a Walker class for customizable commit walking.
1430    (Dave Borowitz)
1431
1432  * New tree_changes_for_merge function in diff_tree. (Dave Borowitz)
1433
1434  * Easy rename detection in RenameDetector even without find_copies_harder.
1435    (Dave Borowitz)
1436
1437 BUG FIXES
1438
1439  * Avoid storing all objects in memory when writing pack.
1440    (Jelmer Vernooij, #813268)
1441
1442  * Support IPv6 for git:// connections. (Jelmer Vernooij, #801543)
1443
1444  * Improve performance of Repo.revision_history(). (Timo Schmid, #535118)
1445
1446  * Fix use of SubprocessWrapper on Windows. (Paulo Madeira, #670035)
1447
1448  * Fix compilation on newer versions of Mac OS X (Lion and up). (Ryan McKern, #794543)
1449
1450  * Prevent raising ValueError for correct refs in RefContainer.__delitem__.
1451
1452  * Correctly return a tuple from MemoryObjectStore.get_raw. (Dave Borowitz)
1453
1454  * Fix a bug in reading the pack checksum when there are fewer than 20 bytes
1455    left in the buffer. (Dave Borowitz)
1456
1457  * Support ~ in git:// URL paths. (Jelmer Vernooij, #813555)
1458
1459  * Make ShaFile.__eq__ work when other is not a ShaFile. (Dave Borowitz)
1460
1461  * ObjectStore.get_graph_walker() now no longer yields the same
1462    revision more than once. This has a significant improvement for
1463    performance when wide revision graphs are involved.
1464    (Jelmer Vernooij, #818168)
1465
1466  * Teach ReceivePackHandler how to read empty packs. (Dave Borowitz)
1467
1468  * Don't send a pack with duplicates of the same object. (Dave Borowitz)
1469
1470  * Teach the server how to serve a clone of an empty repo. (Dave Borowitz)
1471
1472  * Correctly advertise capabilities during receive-pack. (Dave Borowitz)
1473
1474  * Fix add/add and add/rename conflicts in tree_changes_for_merge.
1475    (Dave Borowitz)
1476
1477  * Use correct MIME types in web server. (Dave Borowitz)
1478
1479 API CHANGES
1480
1481  * write_pack no longer takes the num_objects argument and requires an object
1482    to be passed in that is iterable (rather than an iterator) and that
1483    provides __len__.  (Jelmer Vernooij)
1484
1485  * write_pack_data has been renamed to write_pack_objects and no longer takes a
1486    num_objects argument. (Jelmer Vernooij)
1487
1488  * take_msb_bytes, read_zlib_chunks, unpack_objects, and
1489    PackStreamReader.read_objects now take an additional argument indicating a
1490    crc32 to compute. (Dave Borowitz)
1491
1492  * PackObjectIterator was removed; its functionality is still exposed by
1493    PackData.iterobjects. (Dave Borowitz)
1494
1495  * Add a sha arg to write_pack_object to incrementally compute a SHA.
1496    (Dave Borowitz)
1497
1498  * Include offset in PackStreamReader results. (Dave Borowitz)
1499
1500  * Move PackStreamReader from server to pack. (Dave Borowitz)
1501
1502  * Extract a check_length_and_checksum, compute_file_sha, and
1503    pack_object_header pack helper functions. (Dave Borowitz)
1504
1505  * Extract a compute_file_sha function. (Dave Borowitz)
1506
1507  * Remove move_in_thin_pack as a separate method; add_thin_pack now completes
1508    the thin pack and moves it in in one step. Remove ThinPackData as well.
1509    (Dave Borowitz)
1510
1511  * Custom buffer size in read_zlib_chunks. (Dave Borowitz)
1512
1513  * New UnpackedObject data class that replaces ad-hoc tuples in the return
1514    value of unpack_object and various DeltaChainIterator methods.
1515    (Dave Borowitz)
1516
1517  * Add a lookup_path convenience method to Tree. (Dave Borowitz)
1518
1519  * Optionally create RenameDetectors without passing in tree SHAs.
1520    (Dave Borowitz)
1521
1522  * Optionally include unchanged entries in RenameDetectors. (Dave Borowitz)
1523
1524  * Optionally pass a RenameDetector to tree_changes. (Dave Borowitz)
1525
1526  * Optionally pass a request object through to server handlers. (Dave Borowitz)
1527
1528 TEST CHANGES
1529
1530  * If setuptools is installed, "python setup.py test" will now run the testsuite.
1531    (Jelmer Vernooij)
1532
1533  * Add a new build_pack test utility for building packs from a simple spec.
1534    (Dave Borowitz)
1535
1536  * Add a new build_commit_graph test utility for building commits from a
1537    simple spec. (Dave Borowitz)
1538
15390.7.1	2011-04-12
1540
1541 BUG FIXES
1542
1543  * Fix double decref in _diff_tree.c. (Ted Horst, #715528)
1544
1545  * Fix the build on Windows. (Pascal Quantin)
1546
1547  * Fix get_transport_and_path compatibility with pre-2.6.5 versions of Python.
1548    (Max Bowsher, #707438)
1549
1550  * BaseObjectStore.determine_wants_all no longer breaks on zero SHAs.
1551    (Jelmer Vernooij)
1552
1553  * write_tree_diff() now supports submodules.
1554    (Jelmer Vernooij)
1555
1556  * Fix compilation for XCode 4 and older versions of distutils.sysconfig.
1557    (Daniele Sluijters)
1558
1559 IMPROVEMENTS
1560
1561  * Sphinxified documentation. (Lukasz Balcerzak)
1562
1563  * Add Pack.keep.(Marc Brinkmann)
1564
1565 API CHANGES
1566
1567  * The order of the parameters to Tree.add(name, mode, sha) has changed, and
1568    is now consistent with the rest of Dulwich. Existing code will still
1569    work but print a DeprecationWarning. (Jelmer Vernooij, #663550)
1570
1571  * Tree.entries() is now deprecated in favour of Tree.items() and
1572    Tree.iteritems(). (Jelmer Vernooij)
1573
15740.7.0	2011-01-21
1575
1576 FEATURES
1577
1578  * New `dulwich.diff_tree` module for simple content-based rename detection.
1579    (Dave Borowitz)
1580
1581  * Add Tree.items(). (Jelmer Vernooij)
1582
1583  * Add eof() and unread_pkt_line() methods to Protocol. (Dave Borowitz)
1584
1585  * Add write_tree_diff(). (Jelmer Vernooij)
1586
1587  * Add `serve_command` function for git server commands as executables.
1588    (Jelmer Vernooij)
1589
1590  * dulwich.client.get_transport_and_path now supports rsync-style repository URLs.
1591    (Dave Borowitz, #568493)
1592
1593 BUG FIXES
1594
1595  * Correct short-circuiting operation for no-op fetches in the server.
1596    (Dave Borowitz)
1597
1598  * Support parsing git mbox patches without a version tail, as generated by
1599    Mercurial.  (Jelmer Vernooij)
1600
1601  * Fix dul-receive-pack and dul-upload-pack. (Jelmer Vernooij)
1602
1603  * Zero-padded file modes in Tree objects no longer trigger an exception but
1604    the check code warns about them. (Augie Fackler, #581064)
1605
1606  * Repo.init() now honors the mkdir flag. (#671159)
1607
1608  * The ref format is now checked when setting a ref rather than when reading it back.
1609    (Dave Borowitz, #653527)
1610
1611  * Make sure pack files are closed correctly. (Tay Ray Chuan)
1612
1613 DOCUMENTATION
1614
1615  * Run the tutorial inside the test suite. (Jelmer Vernooij)
1616
1617  * Reorganized and updated the tutorial. (Jelmer Vernooij, Dave Borowitz, #610550,
1618     #610540)
1619
1620
16210.6.2	2010-10-16
1622
1623 BUG FIXES
1624
1625  * HTTP server correctly handles empty CONTENT_LENGTH. (Dave Borowitz)
1626
1627  * Don't error when creating GitFiles with the default mode. (Dave Borowitz)
1628
1629  * ThinPackData.from_file now works with resolve_ext_ref callback.
1630    (Dave Borowitz)
1631
1632  * Provide strnlen() on mingw32 which doesn't have it. (Hans Kolek)
1633
1634  * Set bare=true in the configuratin for bare repositories. (Dirk Neumann)
1635
1636 FEATURES
1637
1638  * Use slots for core objects to save up on memory. (Jelmer Vernooij)
1639
1640  * Web server supports streaming progress/pack output. (Dave Borowitz)
1641
1642  * New public function dulwich.pack.write_pack_header. (Dave Borowitz)
1643
1644  * Distinguish between missing files and read errors in HTTP server.
1645    (Dave Borowitz)
1646
1647  * Initial work on support for fastimport using python-fastimport.
1648    (Jelmer Vernooij)
1649
1650  * New dulwich.pack.MemoryPackIndex class. (Jelmer Vernooij)
1651
1652  * Delegate SHA peeling to the object store.  (Dave Borowitz)
1653
1654 TESTS
1655
1656  * Use GitFile when modifying packed-refs in tests. (Dave Borowitz)
1657
1658  * New tests in test_web with better coverage and fewer ad-hoc mocks.
1659    (Dave Borowitz)
1660
1661  * Standardize quote delimiters in test_protocol. (Dave Borowitz)
1662
1663  * Fix use when testtools is installed. (Jelmer Vernooij)
1664
1665  * Add trivial test for write_pack_header. (Jelmer Vernooij)
1666
1667  * Refactor some of dulwich.tests.compat.server_utils. (Dave Borowitz)
1668
1669  * Allow overwriting id property of objects in test utils. (Dave Borowitz)
1670
1671  * Use real in-memory objects rather than stubs for server tests.
1672    (Dave Borowitz)
1673
1674  * Clean up MissingObjectFinder. (Dave Borowitz)
1675
1676 API CHANGES
1677
1678  * ObjectStore.iter_tree_contents now walks contents in depth-first, sorted
1679    order. (Dave Borowitz)
1680
1681  * ObjectStore.iter_tree_contents can optionally yield tree objects as well.
1682    (Dave Borowitz).
1683
1684  * Add side-band-64k support to ReceivePackHandler. (Dave Borowitz)
1685
1686  * Change server capabilities methods to classmethods. (Dave Borowitz)
1687
1688  * Tweak server handler injection. (Dave Borowitz)
1689
1690  * PackIndex1 and PackIndex2 now subclass FilePackIndex, which is
1691    itself a subclass of PackIndex. (Jelmer Vernooij)
1692
1693 DOCUMENTATION
1694
1695  * Add docstrings for various functions in dulwich.objects. (Jelmer Vernooij)
1696
1697  * Clean up docstrings in dulwich.protocol. (Dave Borowitz)
1698
1699  * Explicitly specify allowed protocol commands to
1700    ProtocolGraphWalker.read_proto_line.  (Dave Borowitz)
1701
1702  * Add utility functions to DictRefsContainer. (Dave Borowitz)
1703
1704
17050.6.1	2010-07-22
1706
1707 BUG FIXES
1708
1709  * Fix memory leak in C implementation of sorted_tree_items. (Dave Borowitz)
1710
1711  * Use correct path separators for named repo files. (Dave Borowitz)
1712
1713  * python > 2.7 and testtools-based test runners will now also pick up skipped
1714    tests correctly. (Jelmer Vernooij)
1715
1716 FEATURES
1717
1718  * Move named file initilization to BaseRepo. (Dave Borowitz)
1719
1720  * Add logging utilities and git/HTTP server logging. (Dave Borowitz)
1721
1722  * The GitClient interface has been cleaned up and instances are now reusable.
1723    (Augie Fackler)
1724
1725  * Allow overriding paths to executables in GitSSHClient.
1726    (Ross Light, Jelmer Vernooij, #585204)
1727
1728  * Add PackBasedObjectStore.pack_loose_objects(). (Jelmer Vernooij)
1729
1730 TESTS
1731
1732  * Add tests for sorted_tree_items and C implementation. (Dave Borowitz)
1733
1734  * Add a MemoryRepo that stores everything in memory. (Dave Borowitz)
1735
1736  * Quiet logging output from web tests. (Dave Borowitz)
1737
1738  * More flexible version checking for compat tests. (Dave Borowitz)
1739
1740  * Compat tests for servers with and without side-band-64k. (Dave Borowitz)
1741
1742 CLEANUP
1743
1744  * Clean up file headers. (Dave Borowitz)
1745
1746 TESTS
1747
1748  * Use GitFile when modifying packed-refs in tests. (Dave Borowitz)
1749
1750 API CHANGES
1751
1752  * dulwich.pack.write_pack_index_v{1,2} now take a file-like object
1753    rather than a filename. (Jelmer Vernooij)
1754
1755  * Make dul-daemon/dul-web trivial wrappers around server functionality.
1756    (Dave Borowitz)
1757
1758  * Move reference WSGI handler to web.py. (Dave Borowitz)
1759
1760  * Factor out _report_status in ReceivePackHandler. (Dave Borowitz)
1761
1762  * Factor out a function to convert a line to a pkt-line. (Dave Borowitz)
1763
1764
17650.6.0	2010-05-22
1766
1767note: This list is most likely incomplete for 0.6.0.
1768
1769 BUG FIXES
1770
1771  * Fix ReceivePackHandler to disallow removing refs without delete-refs.
1772    (Dave Borowitz)
1773
1774  * Deal with capabilities required by the client, even if they
1775    can not be disabled in the server. (Dave Borowitz)
1776
1777  * Fix trailing newlines in generated patch files.
1778    (Jelmer Vernooij)
1779
1780  * Implement RefsContainer.__contains__. (Jelmer Vernooij)
1781
1782  * Cope with \r in ref files on Windows. (
1783    http://github.com/jelmer/dulwich/issues/#issue/13, Jelmer Vernooij)
1784
1785  * Fix GitFile breakage on Windows. (Anatoly Techtonik, #557585)
1786
1787  * Support packed ref deletion with no peeled refs. (Augie Fackler)
1788
1789  * Fix send pack when there is nothing to fetch. (Augie Fackler)
1790
1791  * Fix fetch if no progress function is specified. (Augie Fackler)
1792
1793  * Allow double-staging of files that are deleted in the index.
1794    (Dave Borowitz)
1795
1796  * Fix RefsContainer.add_if_new to support dangling symrefs.
1797    (Dave Borowitz)
1798
1799  * Non-existant index files in non-bare repositories are now treated as
1800    empty. (Dave Borowitz)
1801
1802  * Always update ShaFile.id when the contents of the object get changed.
1803    (Jelmer Vernooij)
1804
1805  * Various Python2.4-compatibility fixes. (Dave Borowitz)
1806
1807  * Fix thin pack handling. (Dave Borowitz)
1808
1809 FEATURES
1810
1811  * Add include-tag capability to server. (Dave Borowitz)
1812
1813  * New dulwich.fastexport module that can generate fastexport
1814    streams. (Jelmer Vernooij)
1815
1816  * Implemented BaseRepo.__contains__. (Jelmer Vernooij)
1817
1818  * Add __setitem__ to DictRefsContainer. (Dave Borowitz)
1819
1820  * Overall improvements checking Git objects. (Dave Borowitz)
1821
1822  * Packs are now verified while they are received. (Dave Borowitz)
1823
1824 TESTS
1825
1826  * Add framework for testing compatibility with C Git. (Dave Borowitz)
1827
1828  * Add various tests for the use of non-bare repositories. (Dave Borowitz)
1829
1830  * Cope with diffstat not being available on all platforms.
1831    (Tay Ray Chuan, Jelmer Vernooij)
1832
1833  * Add make_object and make_commit convenience functions to test utils.
1834    (Dave Borowitz)
1835
1836 API BREAKAGES
1837
1838  * The 'committer' and 'message' arguments to Repo.do_commit() have
1839    been swapped. 'committer' is now optional. (Jelmer Vernooij)
1840
1841  * Repo.get_blob, Repo.commit, Repo.tag and Repo.tree are now deprecated.
1842    (Jelmer Vernooij)
1843
1844  * RefsContainer.set_ref() was renamed to RefsContainer.set_symbolic_ref(),
1845    for clarity. (Jelmer Vernooij)
1846
1847 API CHANGES
1848
1849  * The primary serialization APIs in dulwich.objects now work
1850    with chunks of strings rather than with full-text strings.
1851    (Jelmer Vernooij)
1852
18530.5.02010-03-03
1854
1855 BUG FIXES
1856
1857  * Support custom fields in commits (readonly). (Jelmer Vernooij)
1858
1859  * Improved ref handling. (Dave Borowitz)
1860
1861  * Rework server protocol to be smarter and interoperate with cgit client.
1862    (Dave Borowitz)
1863
1864  * Add a GitFile class that uses the same locking protocol for writes as
1865    cgit. (Dave Borowitz)
1866
1867  * Cope with forward slashes correctly in the index on Windows.
1868    (Jelmer Vernooij, #526793)
1869
1870 FEATURES
1871
1872  * --pure option to setup.py to allow building/installing without the C
1873    extensions. (Hal Wine, Anatoly Techtonik, Jelmer Vernooij, #434326)
1874
1875  * Implement Repo.get_config(). (Jelmer Vernooij, Augie Fackler)
1876
1877  * HTTP dumb and smart server. (Dave Borowitz)
1878
1879  * Add abstract baseclass for Repo that does not require file system
1880    operations. (Dave Borowitz)
1881
18820.4.1	2010-01-03
1883
1884 FEATURES
1885
1886  * Add ObjectStore.iter_tree_contents(). (Jelmer Vernooij)
1887
1888  * Add Index.changes_from_tree(). (Jelmer Vernooij)
1889
1890  * Add ObjectStore.tree_changes(). (Jelmer Vernooij)
1891
1892  * Add functionality for writing patches in dulwich.patch.
1893    (Jelmer Vernooij)
1894
18950.4.0	2009-10-07
1896
1897 DOCUMENTATION
1898
1899  * Added tutorial.
1900
1901 API CHANGES
1902
1903  * dulwich.object_store.tree_lookup_path will now return the mode and
1904    sha of the object found rather than the object itself.
1905
1906 BUG FIXES
1907
1908  * Use binascii.hexlify / binascii.unhexlify for better performance.
1909
1910  * Cope with extra unknown data in index files by ignoring it (for now).
1911
1912  * Add proper error message when server unexpectedly hangs up. (#415843)
1913
1914  * Correctly write opcode for equal in create_delta.
1915
19160.3.3	2009-07-23
1917
1918 FEATURES
1919
1920  * Implement ShaFile.__hash__().
1921
1922  * Implement Tree.__len__()
1923
1924 BUG FIXES
1925
1926  * Check for 'objects' and 'refs' directories
1927    when looking for a Git repository. (#380818)
1928
19290.3.2	2009-05-20
1930
1931 BUG FIXES
1932
1933  * Support the encoding field in Commits.
1934
1935  * Some Windows compatibility fixes.
1936
1937  * Fixed several issues in commit support.
1938
1939 FEATURES
1940
1941  * Basic support for handling submodules.
1942
19430.3.1	2009-05-13
1944
1945 FEATURES
1946
1947  * Implemented Repo.__getitem__, Repo.__setitem__ and Repo.__delitem__ to
1948    access content.
1949
1950 API CHANGES
1951
1952  * Removed Repo.set_ref, Repo.remove_ref, Repo.tags, Repo.get_refs and
1953    Repo.heads in favor of Repo.refs, a dictionary-like object for accessing
1954    refs.
1955
1956 BUG FIXES
1957
1958  * Removed import of 'sha' module in objects.py, which was causing
1959    deprecation warnings on Python 2.6.
1960
19610.3.0	2009-05-10
1962
1963 FEATURES
1964
1965  * A new function 'commit_tree' has been added that can commit a tree
1966    based on an index.
1967
1968 BUG FIXES
1969
1970  * The memory usage when generating indexes has been significantly reduced.
1971
1972  * A memory leak in the C implementation of parse_tree has been fixed.
1973
1974  * The send-pack smart server command now works. (Thanks Scott Chacon)
1975
1976  * The handling of short timestamps (less than 10 digits) has been fixed.
1977
1978  * The handling of timezones has been fixed.
1979
19800.2.1	2009-04-30
1981
1982 BUG FIXES
1983
1984  * Fix compatibility with Python2.4.
1985
19860.2.0	2009-04-30
1987
1988 FEATURES
1989
1990  * Support for activity reporting in smart protocol client.
1991
1992  * Optional C extensions for better performance in a couple of
1993    places that are performance-critical.
1994
19950.1.1	2009-03-13
1996
1997 BUG FIXES
1998
1999  * Fixed regression in Repo.find_missing_objects()
2000
2001  * Don't fetch ^{} objects from remote hosts, as requesting them
2002    causes a hangup.
2003
2004  * Always write pack to disk completely before calculating checksum.
2005
2006 FEATURES
2007
2008  * Allow disabling thin packs when talking to remote hosts.
2009
20100.1.0	2009-01-24
2011
2012  * Initial release.
2013