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