Merge lp:~jelmer/brz/bundle-webdav into lp:brz
- bundle-webdav
- Merge into trunk
Status: | Merged |
---|---|
Merged at revision: | 7678 |
Proposed branch: | lp:~jelmer/brz/bundle-webdav |
Merge into: | lp:brz |
Diff against target: |
1957 lines (+1904/-0) 8 files modified
breezy/plugins/webdav/NOTES (+43/-0) breezy/plugins/webdav/TODO (+48/-0) breezy/plugins/webdav/__init__.py (+45/-0) breezy/plugins/webdav/tests/__init__.py (+23/-0) breezy/plugins/webdav/tests/dav_server.py (+468/-0) breezy/plugins/webdav/tests/test_webdav.py (+421/-0) breezy/plugins/webdav/webdav.py (+854/-0) breezy/transport/http/urllib.py (+2/-0) |
To merge this branch: | bzr merge lp:~jelmer/brz/bundle-webdav |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Breezy developers | Pending | ||
Review via email: mp+329746@code.launchpad.net |
Commit message
Add support for WebDAV.
Description of the change
Merge support for WebDAV.
- 6772. By Martin Packman
-
Defer format registration in generate_docs.py by gz review by jelmer
- 6773. By Jelmer Vernooij
- 6774. By Jelmer Vernooij
-
Merge lp:~jelmer/brz/offline.
- 6775. By Jelmer Vernooij
-
Merge lp:~jelmer/brz/lock-context.
- 6776. By Jelmer Vernooij
-
Merge lp:~jelmer/brz/gpghome.
- 6777. By Jelmer Vernooij
- 6778. By Jelmer Vernooij
-
Merge lp:~jelmer/brz/warn-mtn-cvs.
- 6779. By Jelmer Vernooij
- 6780. By Jelmer Vernooij
-
Merge lp:~jelmer/brz/bundle-darcs.
- 6781. By Jelmer Vernooij
- 6782. By Jelmer Vernooij
- 6783. By Jelmer Vernooij
- 6784. By Jelmer Vernooij
- 6785. By Jelmer Vernooij
- 6786. By Jelmer Vernooij
- 6787. By Jelmer Vernooij
-
Merge lp:~jelmer/brz/fix-darcs.
- 6788. By Jelmer Vernooij
- 6789. By Jelmer Vernooij
-
Merge lp:~jelmer/brz/rio_pyx.
- 6790. By Jelmer Vernooij
-
Merge lp:~gz/brz/ur_globbing_me.
- 6791. By Jelmer Vernooij
-
Merge lp:~jelmer/brz/fix-ssl-certs.
- 6792. By Jelmer Vernooij
-
Merge lp:~jelmer/brz/update-makefile; add 'update-
python3- passing' target to Makefile. - 6793. By Jelmer Vernooij
-
Merge lp:~jelmer/brz/fix-language.
- 6794. By Jelmer Vernooij
-
Merge lp:~jelmer/brz/install.
- 6795. By Jelmer Vernooij
- 6796. By Jelmer Vernooij
- 6797. By Jelmer Vernooij
-
Merge lp:~jelmer/brz/fix-imports.
- 6798. By Jelmer Vernooij
-
Merge lp:~jelmer/brz/set-root-id.
- 6799. By Jelmer Vernooij
-
Merge lp:~jelmer/brz/escaping.
- 6800. By Jelmer Vernooij
- 6801. By Jelmer Vernooij
-
Merge lp:~jelmer/brz/mixed.
- 6802. By Jelmer Vernooij
- 6803. By Jelmer Vernooij
-
Merge lp:~jelmer/brz/pypi.
- 6804. By Jelmer Vernooij
-
Merge lp:~jelmer/brz/devdocs.
- 6805. By Jelmer Vernooij
- 6806. By Jelmer Vernooij
-
Merge https:/
/code.launchpad .net/~gz/ brz/module_ feature_ import. - 6807. By Jelmer Vernooij
-
Merge lp:~gz/brz/py3_groupcompress.
- 6808. By Jelmer Vernooij
- 6809. By Jelmer Vernooij
- 6810. By Jelmer Vernooij
-
Merge lp:~gz/brz/ws_comma
- 6811. By Jelmer Vernooij
-
Merge lp:~gz/brz/py3_ignores
- 6812. By Jelmer Vernooij
- 6813. By Jelmer Vernooij
-
python3.passing: Allow 6 tests to fail again while we fix up the string types used inside 2a repository implementations.
- 6814. By Jelmer Vernooij
- 6815. By Jelmer Vernooij
- 6816. By Jelmer Vernooij
-
Merge lp:~gz/brz/py3_hashcache
- 6817. By Jelmer Vernooij
- 6818. By Jelmer Vernooij
- 6819. By Jelmer Vernooij
- 6820. By Jelmer Vernooij
-
Merge lp:~jelmer/brz/misc.
- 6821. By Jelmer Vernooij
-
Merge lp:~jelmer/brz/py3_lsprof.
- 6822. By Jelmer Vernooij
- 6823. By Jelmer Vernooij
- 6824. By Jelmer Vernooij
- 6825. By Jelmer Vernooij
-
Merge lp:~jelmer/brz/misc-foreign.
- 6826. By Jelmer Vernooij
- 6827. By Jelmer Vernooij
-
Merge lp:~jelmer/brz/misc-foreign2.
- 6828. By Jelmer Vernooij
-
Merge lp:~jelmer/brz/walkdirs
- 6829. By Jelmer Vernooij
-
Merge lp:~jelmer/brz/log-inventory.
- 6830. By Jelmer Vernooij
- 6831. By Jelmer Vernooij
-
Merge lp:~jelmer/brz/misc-foreign3.
- 6832. By Jelmer Vernooij
-
Merge lp:~jelmer/brz/iter-merged.
- 6833. By Jelmer Vernooij
-
Merge lp:~jelmer/brz/all-paths.
- 6834. By Jelmer Vernooij
-
Merge lp:~jelmer/brz/unused.
- 6835. By Jelmer Vernooij
- 6836. By Jelmer Vernooij
- 6837. By Jelmer Vernooij
- 6838. By Jelmer Vernooij
- 6839. By Jelmer Vernooij
-
Merge lp:~jelmer/brz/get-full.
- 6840. By Jelmer Vernooij
- 6841. By Jelmer Vernooij
-
Merge lp:~jelmer/brz/cp.
- 6842. By Jelmer Vernooij
-
Merge lp:~jelmer/brz/default-time.
- 6843. By Jelmer Vernooij
- 6844. By Jelmer Vernooij
-
Merge lp:~jelmer/brz/unversion.
- 6845. By Jelmer Vernooij
- 6846. By Jelmer Vernooij
- 6847. By Jelmer Vernooij
- 6848. By Jelmer Vernooij
-
Merge lp:~jelmer/brz/foreign-more.
- 6849. By Jelmer Vernooij
-
Merge lp:~jelmer/brz/mark-0
- 6850. By Jelmer Vernooij
- 6851. By Jelmer Vernooij
- 6852. By Jelmer Vernooij
- 6853. By Jelmer Vernooij
-
Add MutableTree.
copy_one. - 6854. By Jelmer Vernooij
-
Merge lp:~jelmer/brz/lp-logout
- 6855. By Jelmer Vernooij
- 6856. By Jelmer Vernooij
-
Merge lp:~jelmer/brz/is-versioned.
- 6857. By Jelmer Vernooij
-
Merge lp:~jelmer/brz/move-ie.
- 6858. By Jelmer Vernooij
- 6859. By Jelmer Vernooij
-
merge lp:~jelmer/brz/todo
- 6860. By Jelmer Vernooij
-
Add magic to say that the 'fastimport' feature requires the 'fastimport' module.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/req- fastimport/ +merge/ 337918 - 6861. By Jelmer Vernooij
-
Allow proxying for lazy imports on Python 3 for now, and update list of passing tests.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3/ +merge/ 337894 - 6862. By Jelmer Vernooij
-
Some more foreign branch test fixes.
Also, fix some misisng spaces.
Notably, this changes the expectations with regard to directories reported by Tree.list_files():
If a tree does not support versioned empty directories, implicit directories will still be reported as
versioned, for consistency with Bazaar. Empty directories are of unknown (?) status.Merged from https:/
/code.launchpad .net/~jelmer/ brz/even- more-foreign/ +merge/ 338464 - 6863. By Jelmer Vernooij
-
Use unique messages for commits in diverged branches.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/diverged- revids/ +merge/ 340147 - 6864. By Jelmer Vernooij
-
Allow ControlDirFormat instances to be uninitializeable (like git remotes).
Merged from https:/
/code.launchpad .net/~jelmer/ brz/uninitializ e-remote/ +merge/ 340049 - 6865. By Jelmer Vernooij
-
Don't attempt to test tree description for control formats that don't support trees.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/testr- tree-descriptio n/+merge/ 340027 - 6866. By Jelmer Vernooij
-
Allow InterBranch implementations to not provide support for limit= parameter.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fetch- limit-unsupport ed/+merge/ 340021 - 6867. By Jelmer Vernooij
-
Fix walkdirs tests for formats without versioned directories.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/walkdirs/ +merge/ 339726 - 6868. By Jelmer Vernooij
-
Move Tree.plan_
file_merge to InventoryTree. plan_file_ merge. Merged from https:/
/code.launchpad .net/~jelmer/ brz/plan- merge/+ merge/339452 - 6869. By Jelmer Vernooij
-
Remove unused NoSuchIdInRepos
itory exception. Merged from https:/
/code.launchpad .net/~jelmer/ brz/no- such-repo/ +merge/ 339451 - 6870. By Jelmer Vernooij
-
Make progress bars context managers.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/pb- context/ +merge/ 339449 - 6871. By Jelmer Vernooij
-
Make progress bars context managers.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/pb- context/ +merge/ 339449 - 6872. By Jelmer Vernooij
-
Allow working trees to not implement set_merge_modified.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/merge- modified/ +merge/ 339727 - 6873. By Jelmer Vernooij
-
Allow working tree formats to specify that they don't support righthand ghost parents.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/wt- righthand- ghost-parents/ +merge/ 339496 - 6874. By Jelmer Vernooij
-
Fix some more tests when used against foreign branches.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/even- even-more- foreign/ +merge/ 340261 - 6875. By Jelmer Vernooij
-
Allow ControlDir.
break_lock to not be implemented. Merged from https:/
/code.launchpad .net/~jelmer/ brz/lock- breaking/ +merge/ 340563 - 6876. By Jelmer Vernooij
-
Consistently use Branch.user_url when referring to branch location.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/user- url/+merge/ 340567 - 6877. By Jelmer Vernooij
-
Allow InterBranch formats to raise NoRoundtripping
Support to indicate
that they can't do lossless conversion between two branches.Merged from https:/
/code.launchpad .net/~jelmer/ brz/lossless- fetch-optional/ +merge/ 340769 - 6878. By Jelmer Vernooij
-
Compare user_url branch attribute in cmd_branches, when finding active branch.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/branches- url/+merge/ 340765 - 6879. By Jelmer Vernooij
-
Fix some walkdir tests for workingtree formats without support for versioned directories.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/walkdirs/ +merge/ 340639 - 6880. By Jelmer Vernooij
-
Add a WorkingTreeFormat flag for the ignore pattern filename.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/bzrignore/ +merge/ 340633 - 6881. By Jelmer Vernooij
-
Skip over some more inventory-specific stuff in tests for foreign branches.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/skip- inventory/ +merge/ 340637 - 6882. By Jelmer Vernooij
-
Use sprout rather than clone when creating a copy of a branch in a controldir.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/push- uses-sprout/ +merge/ 340585 - 6883. By Jelmer Vernooij
-
Only check for specific behaviour over HPSS for VF repositories.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/vfrepo- insert- stream/ +merge/ 340583 - 6884. By Jelmer Vernooij
-
Avoid id2path calls in Tree.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/changes- from-entries/ +merge/ 341569 - 6885. By Jelmer Vernooij
-
Remove unused Tree._check_
retrieved. Merged from https:/
/code.launchpad .net/~jelmer/ brz/kill- check-retrieved /+merge/ 341568 - 6886. By Jelmer Vernooij
-
Remove TreeTransform.
trans_id_ tree_file_ id(). Merged from https:/
/code.launchpad .net/~jelmer/ brz/transform- no-trans- id-tree- file-id/ +merge/ 341698 - 6887. By Jelmer Vernooij
-
Add a WorkingTree.
supports_ merge_modified( ) method. Merged from https:/
/code.launchpad .net/~jelmer/ brz/supports- merge-modified/ +merge/ 341604 - 6888. By Jelmer Vernooij
-
Remove Tree.iter_children in favor of Tree.iter_
child_entries. Merged from https:/
/code.launchpad .net/~jelmer/ brz/iter- children/ +merge/ 341576 - 6889. By Jelmer Vernooij
-
Avoid using inventory in FilterTreeContext, and remove unused functionality.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/filter- no-inventory/ +merge/ 342012 - 6890. By Jelmer Vernooij
-
Remove some reliance on file ids from TreeTransform.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/transform- less-file- ids/+merge/ 341575 - 6891. By Jelmer Vernooij
-
Add a flag for Trees to indicate whether they support rename tracking.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/supports- rename- tracking/ +merge/ 341565 - 6892. By Jelmer Vernooij
-
Fix the stats command by not returning an empty iterator.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fix- stats/+ merge/341559 - 6893. By Jelmer Vernooij
-
Avoid using file ids in a couple more places.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/cleanups/ +merge/ 341360 - 6894. By Jelmer Vernooij
-
Add Branch.
create_ memorytree. Merged from https:/
/code.launchpad .net/~jelmer/ brz/memorytree/ +merge/ 341358 - 6895. By Jelmer Vernooij
-
Avoid use of TreeTransform.
trans_id_ file_id. Merged from https:/
/code.launchpad .net/~jelmer/ brz/transform- no-trans- id-file- id/+merge/ 341701 - 6896. By Jelmer Vernooij
-
Add a new Tree.find_
related_ paths_across_ trees() method and pass files rather than file ids in various places. Merged from https:/
/code.launchpad .net/~jelmer/ brz/extract- paths2ids/ +merge/ 341923 - 6897. By Jelmer Vernooij
-
Simplify CommitBuilder tests, fix some tests for formats that don't support rename tracking.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fix- commit- builder/ +merge/ 342018 - 6898. By Jelmer Vernooij
-
Remove uses of Tree.id2path in all important codepaths of merge.
Instead, pass around the actual paths in relevant trees.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/merge- less-file- ids/+merge/ 341593 - 6899. By Jelmer Vernooij
-
Add support for passing mode argument to GPGSignature.sign.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/gpg- detached- sign/+merge/ 341287 - 6900. By Jelmer Vernooij
-
Fix one of the rename tests for trees that don't support empty versioned directories.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/rename- to-empty- dir/+merge/ 341281 - 6901. By Jelmer Vernooij
-
Rename the ``brz.transform
.orphan_ policy` ` flag to ``transform. orphan_ policy` `. Merged from https:/
/code.launchpad .net/~jelmer/ brz/rename- config- brz-transform/ +merge/ 341279 - 6902. By Jelmer Vernooij
-
Some more foreign branch test fixes.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fetch- rich-root/ +merge/ 341186 - 6903. By Jelmer Vernooij
-
Add some uniqueness to commit messages.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/dupe- commits/ +merge/ 341078 - 6904. By Jelmer Vernooij
-
Various foreign-branch related fixes to CommitBuilder tests.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/avoid- inventory/ +merge/ 341077 - 6905. By Jelmer Vernooij
-
Only set default HTTP headers if they weren't provided by the caller.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/http- header- overrides/ +merge/ 341185 - 6906. By Jelmer Vernooij
-
Fix remaining walkdirs tests for trees wthout versioned directories.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/walkdirs- 2/+merge/ 340931 - 6907. By Jelmer Vernooij
-
Allow the default branch to be a reference branch.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/default- is-reference/ +merge/ 340929 - 6908. By Jelmer Vernooij
-
Blacklist git and git-bare for checkout description tests.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/format- description/ +merge/ 340885 - 6909. By Jelmer Vernooij
-
Allow InterBranch formats to raise NoRoundtripping
Support. Merged from https:/
/code.launchpad .net/~jelmer/ brz/noroundtrip pin/+merge/ 340877 - 6910. By Jelmer Vernooij
-
Move responsibility for dealing with tags bytes from Branch to BzrBranch.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/move- bzrbranch/ +merge/ 340777 - 6911. By Martin Packman
-
Fix SFTP monkey patch for Python 3
Merged from https:/
/code.launchpad .net/~gz/ brz/paramiko_ code_hack/ +merge/ 342028 - 6912. By Jelmer Vernooij
-
Add a 'check-ci' target that outputs subunit for the purpose of the CI.
At the moment, this just runs the command that byoci was running. Having it as
a target here allows us to e.g. add Python3 tests in the future easily.Companion branch: lp:~jelmer/byoci/check-ci
Merged from https:/
/code.launchpad .net/~jelmer/ brz/check- ci/+merge/ 342027 - 6913. By Jelmer Vernooij
-
Change Tree.iter_
files_bytes( ) to take a (path, identifier) list rather than a (file_id, identifier) list. Merged from https:/
/code.launchpad .net/~jelmer/ brz/iter- files-bytes/ +merge/ 340578 - 6914. By Jelmer Vernooij
-
Fix unicode tests for foreign trees.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fix- unicode- tests/+ merge/342032 - 6915. By Jelmer Vernooij
-
Fail early in MemoryTree.
unversion( ) when passing in paths that don't exist. Merged from https:/
/code.launchpad .net/~jelmer/ brz/memorytree- fail-early/ +merge/ 342036 - 6916. By Jelmer Vernooij
-
Allow empty branches that aren't actually present on disk.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/nascent- branches/ +merge/ 340568 - 6917. By Jelmer Vernooij
-
Allow overriding PYTHON to use in testr from the environment.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/testr- python/ +merge/ 342040 - 6918. By Jelmer Vernooij
-
Avoid use of file ids in a few more places.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/avoid- file-ids/ +merge/ 342033 - 6919. By Jelmer Vernooij
-
Fix several more foreign tests.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/more- foreign- fixes/+ merge/342035 - 6920. By Jelmer Vernooij
-
Don't require that entries returned from Tree have a .revision attribute set.
If callers care, they can use Tree.get_
file_revision( ). Git doesn't store file revisions, and getting at this attribute is costly.
(Nothing else in the non-bzr bit of the breezy codebase currently seems to require .revision)
Merged from https:/
/code.launchpad .net/~jelmer/ brz/no- more-ie- revision/ +merge/ 342045 - 6921. By Martin Packman
-
Further work on sane ui factory interface and fix choose in char mode
Merged from https:/
/code.launchpad .net/~gz/ brz/ui_ enter/+ merge/342043 - 6922. By Jelmer Vernooij
-
Use HasPathRelations in a few more places.
Simplify the actual HasPathRelations implementation to always take tuples with
current and previous path. The mode in which only the current path is specified
is not useful; the HasLayout matcher can already be used for that.Merged from https:/
/code.launchpad .net/~jelmer/ brz/has- path-relations/ +merge/ 342034 - 6923. By Jelmer Vernooij
-
Some random Python3 fixes.
In particular:
* Make format strings bytestrings
* Allow a $PYTHON variable to be set when calling testrThis adds another ~400 tests to the "known passing" list.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- more/+merge/ 337904 - 6924. By Jelmer Vernooij
-
Some foreign branch fixes for the commit builder tests.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/commit- builder- fixes/+ merge/342050 - 6925. By Jelmer Vernooij
-
Fix regression dealing with LCA merges.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/merge- lca-regression/ +merge/ 342049 - 6926. By Jelmer Vernooij
-
Add more bees in places, get more tests to pass on Python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/bees/ +merge/ 337908 - 6927. By Jelmer Vernooij
-
Remove the __getitem__, __iter__ and __delitem__ implementations from Inventory.
Instead, add .get_entry(), .all_file_ids() and .delete().
Merged from https:/
/code.launchpad .net/~jelmer/ brz/inv- not-dict/ +merge/ 342053 - 6928. By Jelmer Vernooij
-
Add more bees. In particular:
* for file ids
* for revision ids
* for file contents in build_tree_contents( ) Merged from https:/
/code.launchpad .net/~jelmer/ brz/more- bees/+merge/ 337919 - 6929. By Jelmer Vernooij
-
Change arguments for 'modify' and 'unversion' in BranchBuilder.
build_snapshot from a file-id to path. Merged from https:/
/code.launchpad .net/~jelmer/ brz/conflicts/ +merge/ 341069 - 6930. By Jelmer Vernooij
-
Fix 'brz shell-complete' and add some really basic smoke tests.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/shell- complete- fix/+merge/ 342458 - 6931. By Jelmer Vernooij
-
Fix typo in README, rename to .rst.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/readme/ +merge/ 342480 - 6932. By Jelmer Vernooij
-
Some miscellaneous changes (check for actual root, add Tree.versionabl
e_kind) . Merged from https:/
/code.launchpad .net/~jelmer/ brz/skip- root-simpler/ +merge/ 342451 - 6933. By Jelmer Vernooij
-
Allow breezy's selftest to run without tests installed.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/no- tests/+ merge/342440 - 6934. By Jelmer Vernooij
-
Don't explicitly specify repository format to fixed component bzrdirs (like weave).
Merged from https:/
/code.launchpad .net/~jelmer/ brz/init- repo-weave- fmt/+merge/ 342438 - 6935. By Jelmer Vernooij
-
Remove unused yield_parents argument from Tree.iter_
entries_ by_dir( ). Merged from https:/
/code.launchpad .net/~jelmer/ brz/yield- parents/ +merge/ 342257 - 6936. By Jelmer Vernooij
-
Remove the deprecated _multi commands in Transport.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/kill- multi/+ merge/342066 - 6937. By Jelmer Vernooij
-
Add a format alias 'bzr' for '2a'.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/bzr- format- alias/+ merge/342431 - 6938. By Jelmer Vernooij
-
In InventoryTree, always use path if specified.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/path2id- path-only/ +merge/ 342253 - 6939. By Jelmer Vernooij
-
Update the python3.passing file to reflect reality.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- passing- regressions/ +merge/ 342060 - 6940. By Jelmer Vernooij
-
Two switch fixes (relative paths in lightweight checkout URLs of colocated branches (#919169), print error when attempting to create a branch reference loop (#1018628))
Merged from https:/
/code.launchpad .net/~jelmer/ brz/switch- self/+merge/ 342486 - 6941. By Jelmer Vernooij
-
Several changes to help foreign branch use of tree references.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/tree- reference- fixes/+ merge/342059 - 6942. By Jelmer Vernooij
-
Fix the remaining tests for brz-git!
Merged from https:/
/code.launchpad .net/~jelmer/ brz/remaining/ +merge/ 342161 - 6943. By Jelmer Vernooij
-
Add Inventory.
get_entry_ by_path, refactor InventoryTree. Merged from https:/
/code.launchpad .net/~jelmer/ brz/inv- get-entry- by-path/ +merge/ 342501 - 6944. By Jelmer Vernooij
-
Move the dump-btree command to breezy.
bzr.debug_ commands. Merged from https:/
/code.launchpad .net/~jelmer/ brz/move- debug-commands/ +merge/ 342492 - 6945. By Jelmer Vernooij
-
Improve short options for formats.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/short- options/ +merge/ 342436 - 6946. By Jelmer Vernooij
-
Move vf-specific check code to breezy.bzr.check.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/check/ +merge/ 342839 - 6947. By Jelmer Vernooij
-
Run python3 tests in 'make check-ci'.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- ci/+merge/ 342039 - 6948. By Jelmer Vernooij
-
Integrate the urllib-specific bits into the main HttpTransport.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/urllib- integration/ +merge/ 342487 - 6949. By Jelmer Vernooij
-
Update python3.passing.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/update- python3. passing/ +merge/ 345127 - 6950. By Jelmer Vernooij
-
Don't expect unmodified files to be removed when a merge is reverted on working trees that don't support merge_modified.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/merge- modified/ +merge/ 345133 - 6951. By Jelmer Vernooij
-
Add a travis configuration file, for those pushing Breezy to GitHub.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/travis/ +merge/ 343119 - 6952. By Jelmer Vernooij
-
Remove the dpush command, in favor of 'brz push --lossy'.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/remove- dpush/+ merge/342553 - 6953. By Jelmer Vernooij
-
Remove the fast-import-
{query, info,filter} commands. Merged from https:/
/code.launchpad .net/~jelmer/ brz/fast- import- cmds/+merge/ 342461 - 6954. By Jelmer Vernooij
-
Remove grep tests from python3.passing; they fail on travis.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/travis- fixes/+ merge/345175 - 6955. By Jelmer Vernooij
-
Add a --lossy option to push.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/lossy- push/+merge/ 345125 - 6956. By Jelmer Vernooij
-
Enable coverage reporting in travis.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/coverage/ +merge/ 345182 - 6957. By Jelmer Vernooij
-
Always run testsuite with Python2 and Python3, even if one fails.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/run- both/+merge/ 345183 - 6958. By Jelmer Vernooij
-
Switch --coverage to use coverage module.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/coverage- coverage/ +merge/ 345192 - 6959. By Jelmer Vernooij
-
Opt into apt update in the travis build.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/travis- apt/+merge/ 345327 - 6960. By Jelmer Vernooij
-
Bundle the git plugin with Breezy.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/bundle- git/+merge/ 345138 - 6961. By Jelmer Vernooij
-
Drop two broken dpush tests (dpush has been removed).
Merged from https:/
/code.launchpad .net/~jelmer/ brz/no- dpush/+ merge/345331 - 6962. By Jelmer Vernooij
-
Drop support for FTP.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/no- more-ftp/ +merge/ 342526 - 6963. By Jelmer Vernooij
-
Fix an AttributeError when writing to Git cache files.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/git- cache-fixes/ +merge/ 345459 - 6964. By Jelmer Vernooij
-
Add some more bees, especially for the smart server/client.
This fixes another ~1000 tests with Python3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- a/+merge/ 345466 - 6965. By Jelmer Vernooij
-
Add a GitHub bug tracker.
E.g. brz commit --fixes github:
breezy- team/breezy/ 1 Merged from https:/
/code.launchpad .net/~jelmer/ brz/github- tracker/ +merge/ 345458 - 6966. By Jelmer Vernooij
-
Support nested trees in 'brz export'.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/export- nested- tree/+merge/ 345553 - 6967. By Jelmer Vernooij
-
Support running 'bzr log' in a shallow git branch.
Revision numbers are not displayed in this case, since they are not known.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/horizon- log/+merge/ 345552 - 6968. By Jelmer Vernooij
-
Port some of brz-git to python3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- git/+merge/ 345479 - 6969. By Jelmer Vernooij
-
Support 'brz version-info' in branches without a known revno.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/version- info-horizon/ +merge/ 345625 - 6970. By Jelmer Vernooij
-
Handle GhostRevisionsH
aveNoRevno in hpss. Merged from https:/
/code.launchpad .net/~jelmer/ brz/hpss- ghost-rev- error/+ merge/346342 - 6971. By Jelmer Vernooij
-
Re-enable "git clone --depth".
Merged from https:/
/code.launchpad .net/~jelmer/ brz/enable- depth/+ merge/346237 - 6972. By Jelmer Vernooij
-
Refactor the export API.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/archive/ +merge/ 346369 - 6973. By Jelmer Vernooij
-
Implement GitRevisionTree
.archive for remote git trees. Merged from https:/
/code.launchpad .net/~jelmer/ brz/git- archive/ +merge/ 345969 - 6974. By Jelmer Vernooij
-
Make InterIndexGitTree suitable for use with MemoryGitTree.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/inter- memorygittree/ +merge/ 346426 - 6975. By Jelmer Vernooij
-
Implement GitRevisionTree
.annotate_ iter. Merged from https:/
/code.launchpad .net/~jelmer/ brz/revtree- annotate/ +merge/ 346658 - 6976. By Vincent Ladeuil
-
Define containers and commands for ci.breezy-vcs.org
Merged from https:/
/code.launchpad .net/~vila/ brz/byoci/ +merge/ 346807 - 6977. By Jelmer Vernooij
-
Provide a sensible default implementaton of Tree.filter_
unversioned_ files. Merged from https:/
/code.launchpad .net/~jelmer/ brz/revtree- filter- unversioned/ +merge/ 346659 - 6978. By Jelmer Vernooij
-
Deal with missing files correctly in 'bzr status' in git trees.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/remove- dir/+merge/ 347631 - 6979. By Jelmer Vernooij
-
merge lp:~jelmer/brz/unlock-1
- 6980. By Jelmer Vernooij
- 6981. By Jelmer Vernooij
- 6982. By Jelmer Vernooij
- 6983. By Jelmer Vernooij
- 6984. By Jelmer Vernooij
- 6985. By Jelmer Vernooij
- 6986. By Jelmer Vernooij
-
Merge lp:~jelmer/brz/python3-pack.
- 6987. By Jelmer Vernooij
- 6988. By Jelmer Vernooij
-
Merge lp:~jelmer/brz/git-fixes.
- 6989. By Jelmer Vernooij
- 6990. By Jelmer Vernooij
- 6991. By Jelmer Vernooij
- 6992. By Jelmer Vernooij
-
Merge lp:~jelmer/brz/python3-c
- 6993. By Jelmer Vernooij
-
Merge lp:~jelmer/brz/python3-d
- 6994. By Jelmer Vernooij
-
Merge lp:~jelmer/brz/hpss-archive.
- 6995. By Jelmer Vernooij
-
Merge lp:~jelmer/brz/hpss-archive.
- 6996. By Jelmer Vernooij
-
Merge lp:~jelmer/brz/python3-e
- 6997. By Jelmer Vernooij
-
Merge lp:~jelmer/brz/python3-f
- 6998. By Jelmer Vernooij
-
Fix tests on Python3.5.
* brz-git get_branches() return value ordering
* Implement BTreeBuilder.__lt__Merged from https:/
/code.launchpad .net/~jelmer/ brz/fix- python3. 5-tests/ +merge/ 348499 - 6999. By Jelmer Vernooij
-
Fix 'brz serve --git' for native git repositories.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/git- server/ +merge/ 348447 - 7000. By Jelmer Vernooij
-
Simplify root handling in CommitBuilder.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/commit- builder- simplify/ +merge/ 348440 - 7001. By Jelmer Vernooij
-
Support running tests with python2 and python3 prefixes in testr.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/testr- run/+merge/ 348443 - 7002. By Jelmer Vernooij
-
Add HPSS call for Tree.annotate_iter.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/hpss- annotate/ +merge/ 348438 - 7003. By Jelmer Vernooij
-
Fix more tests.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- g/+merge/ 348134 - 7004. By Jelmer Vernooij
-
Fix some more tests on python3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- h/+merge/ 348245 - 7005. By Jelmer Vernooij
-
Add more bees.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- i/+merge/ 348244 - 7006. By Martin Packman
-
Load bt.test_inv without dulwich
Merged from https:/
/code.launchpad .net/~gz/ brz/test_ inv_no_ dulwich/ +merge/ 348787 - 7007. By Martin Packman
-
Load bp.git tests without dulwich
Merged from https:/
/code.launchpad .net/~gz/ brz/bp_ git_no_ dulwich/ +merge/ 348786 - 7008. By Jelmer Vernooij
-
Add HPSS call for Repository.
get_stream_ for_missing_ keys. Merged from https:/
/code.launchpad .net/~jelmer/ brz/hpss- get-missing- keys/+merge/ 348448 - 7009. By Vincent Ladeuil
-
Fix breezy.
tests.per_ transport. TransportTests. test_rename_ dir_nonempty( MemoryTransport ,MemoryServer) for python3. The implementation wasn't atomic and depended on dict order.
Merged from https:/
/code.launchpad .net/~vila/ brz/memory- transport- rename/ +merge/ 348790 - 7010. By Jelmer Vernooij
-
Fix another 1.5k tests on python3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- j/+merge/ 348346 - 7011. By Jelmer Vernooij
-
Fix some more tests on python3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- k/+merge/ 348646 - 7012. By Martin Packman
-
Make mutter format with unicode
Merged from https:/
/code.launchpad .net/~gz/ brz/mutter_ unicode/ +merge/ 348789 - 7013. By Martin Packman
-
Make lazy import tests that replace __import__ work
Merged from https:/
/code.launchpad .net/~gz/ brz/test_ lazy_import_ flakey/ +merge/ 348792 - 7014. By Jelmer Vernooij
-
Remove grep tests from python3.passing.
These don't work on Python3 yet, but were skipped when we were running tests with output piped to e.g. subunit2pyunit.
Unconditionally run the color tests, even if there is no terminal. The tests don't need the terminal anyway.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/no- python3- grep-yet/ +merge/ 348793 - 7015. By Jelmer Vernooij
-
Make sure that strings passed into utextwrap are always unicode.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/the- u-in-utextwrap- is-for- unicode/ +merge/ 348794 - 7016. By Martin Packman
-
Make plugins tests pass on Python 3 again
Merged from https:/
/code.launchpad .net/~gz/ brz/test_ plugins_ repass/ +merge/ 348797 - 7017. By Jelmer Vernooij
-
Ignore ResourceWarning on travis and in check-ci.
We're currently running over their 4Mb output limit.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/no- warnings/ +merge/ 348798 - 7018. By Jelmer Vernooij
-
Port dirstate to python3, a bit.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- dirstate/ +merge/ 348791 - 7019. By Jelmer Vernooij
-
Fix some more dirstate tests on Python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- dirstate- more/+merge/ 348801 - 7020. By Martin Packman
-
Update _known_graph_pyx and expect to pass on Python 3
Merged from https:/
/code.launchpad .net/~gz/ brz/known_ graph_pyx/ +merge/ 348806 - 7021. By Jelmer Vernooij
-
Fix breezy.
tests.test_ diff.TestDiffFr omTool. test_execute when default python is python3. Merged from https:/
/code.launchpad .net/~jelmer/ brz/fix- difftool/ +merge/ 348807 - 7022. By Martin Packman
-
Make _annotator work on Python 3
Merged from https:/
/code.launchpad .net/~gz/ brz/anno_ pyx_py3/ +merge/ 348805 - 7023. By Martin Packman
-
Make _chunks_
to_lines_ pyx work on Python 3 Merged from https:/
/code.launchpad .net/~gz/ brz/chunks_ pyx_py3/ +merge/ 348804 - 7024. By Jelmer Vernooij
-
Fix remaining dirstate tests on Python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/all- the-dirstates/ +merge/ 348802 - 7025. By Jelmer Vernooij
-
Fix more tests on Python3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- l/+merge/ 348782 - 7026. By Jelmer Vernooij
-
Fix more tests on Python3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- m/+merge/ 348800 - 7027. By Jelmer Vernooij
-
Port a few more bits of the git plugin to python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/git- fixes2/ +merge/ 348803 - 7028. By Martin Packman
-
Fix knit loading code on Python 3
Merged from https:/
/code.launchpad .net/~gz/ brz/knit_ load_py3/ +merge/ 348904 - 7029. By Jelmer Vernooij
-
Fix eol handling in knits on Python 3, port fastimport plugin to Python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fastimport- fixes/+ merge/348924 - 7030. By Jelmer Vernooij
-
Port breezy.patches to Python3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- patches/ +merge/ 349085 - 7031. By Jelmer Vernooij
-
Don't make assumptions about the order of revisions returned by BundleWrite.
write_bundle( ). Merged from https:/
/code.launchpad .net/~jelmer/ brz/write- bundle- return- order/+ merge/349070 - 7032. By Jelmer Vernooij
-
Add __hash__ and __lt__ implementations for Pack.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- existing- pack/+merge/ 349089 - 7033. By Jelmer Vernooij
-
Port diff and merge_directive to Python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- diff/+merge/ 349216 - 7034. By Jelmer Vernooij
-
Fix some chk_map tests on Python3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- chk-map/ +merge/ 349330 - 7035. By Martin Packman
-
Make _chk_map_pyx module work on Python 3
Merged from https:/
/code.launchpad .net/~gz/ brz/chk_ map_pyx_ py3/+merge/ 349385 - 7036. By Jelmer Vernooij
-
Fix some merge tests on Python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- merge/+ merge/349097 - 7037. By Jelmer Vernooij
-
Port patiencediff C extensions to python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- patiencediff/ +merge/ 349379 - 7038. By Jelmer Vernooij
-
Add some more bees; support writing both bytes and unicode strings in build_tree_
contents. Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- n/+merge/ 349091 - 7039. By Jelmer Vernooij
-
Change run_bzr to use StringIOWithEnc
oding for stderr and stdout on python 3. Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- blackbox/ +merge/ 349090 - 7040. By Martin Packman
-
Make _btree_
serializer_ pyx module work on Python 3 Merged from https:/
/code.launchpad .net/~gz/ brz/btree_ serializer_ pyx_py3/ +merge/ 349624 - 7041. By Jelmer Vernooij
-
Fix some more git-specific tests on Python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- git-more/ +merge/ 349623 - 7042. By Jelmer Vernooij
-
Fix bash completion plugin tests on Python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- bashcompletion/ +merge/ 349621 - 7043. By Jelmer Vernooij
-
Fix all but 3 launchpad tests on python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- launchpad/ +merge/ 349620 - 7044. By Jelmer Vernooij
-
Fix commitfromnews tests on python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- commitfromnews/ +merge/ 349619 - 7045. By Jelmer Vernooij
-
Fix all but one of the grep plugin tests on python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- grep-all/ +merge/ 349618 - 7046. By Jelmer Vernooij
-
Fix some more blackbox tests on Python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- blackbox- more/+merge/ 349622 - 7047. By Jelmer Vernooij
-
Fix another ~500 tests on Python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- o/+merge/ 349632 - 7048. By Jelmer Vernooij
-
Add a 'python3.flapping' file with flappy tests on Python 3.
'make update-
python3- passing' doesn't attempt to edit these to python3.passing. Merged from https:/
/code.launchpad .net/~jelmer/ brz/flappy/ +merge/ 349774 - 7049. By Jelmer Vernooij
-
Defer sorting paths until utf8 encoding has happened.
This fixes the testsuite when run without extensions built. The only tests that
fail without this change are under
breezy.tests.per_ workingtree. test_workingtre e.TestIllegalPa ths Merged from https:/
/code.launchpad .net/~jelmer/ brz/encoding- no-extensions/ +merge/ 349776 - 7050. By Jelmer Vernooij
-
Fix some more tests on Python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- p/+merge/ 349784 - 7051. By Jelmer Vernooij
-
Fix a few more tests on Python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- q/+merge/ 349833 - 7052. By Jelmer Vernooij
-
Fix another ~500 tests on Python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- r/+merge/ 350430 - 7053. By Jelmer Vernooij
-
Fix another couple of hundred tests on Python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- s/+merge/ 350749 - 7054. By Jelmer Vernooij
-
Fix another ~400 tests on Python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- t/+merge/ 350753 - 7055. By Jelmer Vernooij
-
Install fastimport from git rather than from the Ubuntu package.
This allows installing the python3 version.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/install- fastimport/ +merge/ 351376 - 7056. By Jelmer Vernooij
-
Don't run doctests on Python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/doctests/ +merge/ 351438 - 7057. By Jelmer Vernooij
-
Fix some more tests on Python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- u/+merge/ 351386 - 7058. By Jelmer Vernooij
-
Fix another ~400 tests on Python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- w/+merge/ 352048 - 7059. By Jelmer Vernooij
-
Fix instructions for upload plugin; no longer point at original upstream branch/bugtracker.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/upload- instructions/ +merge/ 352337 - 7060. By Jelmer Vernooij
-
Support symlink creation in SFTP Stub.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/paramiko- symlinks/ +merge/ 352338 - 7061. By Martin Packman
-
Ensure only strictly passing tests are in python3.passing
Merged from https:/
/code.launchpad .net/~gz/ brz/prune_ passing_ py3/+merge/ 352525 - 7062. By Jelmer Vernooij
-
Fix a couple of flappy tests.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/random/ +merge/ 352328 - 7063. By Jelmer Vernooij
-
Fix another round of tests on Python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- x/+merge/ 352226 - 7064. By Jelmer Vernooij
-
Fix a racy TCP server test.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/flaky- server/ +merge/ 352724 - 7065. By Jelmer Vernooij
-
Move git support to breezy.git.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/git- graduate/ +merge/ 348051 - 7066. By Jelmer Vernooij
-
Properly handled ignored directories in Git trees.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/ignored- directory/ +merge/ 352937 - 7067. By Jelmer Vernooij
-
Read README file for long description in setup as text.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fix- setup/+ merge/352932 - 7068. By Jelmer Vernooij
-
Fix handling of BranchReferences remotely.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- remote- reference/ +merge/ 353130 - 7069. By Jelmer Vernooij
-
Fix most selftest tests on Python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- selftest/ +merge/ 353202 - 7070. By Jelmer Vernooij
-
Fix a spuriously failing test.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fix- spurious/ +merge/ 353457 - 7071. By Jelmer Vernooij
-
Fix the last few failing index tests on Python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- fix-index/ +merge/ 353379 - 7072. By Jelmer Vernooij
-
Properly guard against non-ascii bytes in URLs during unescaping on Python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/unicode- urls/+merge/ 353372 - 7073. By Jelmer Vernooij
-
Fix sorting of changes in some tests on Python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/sort- changes/ +merge/ 353368 - 7074. By Martin Packman
-
Fix recursion handling in bencode extension
Merged from https:/
/code.launchpad .net/~gz/ brz/bencode_ recursion/ +merge/ 353451 - 7075. By Jelmer Vernooij
-
Fix some unversion tests on Python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- unversion/ +merge/ 353131 - 7076. By Jelmer Vernooij
-
Fix another 28 HTTP tests on Python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- httpish/ +merge/ 353132 - 7077. By Jelmer Vernooij
-
Fix some log tests on Python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- log-more/ +merge/ 353126 - 7078. By Jelmer Vernooij
-
Fix some bundle-related tests on Python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python- bundle/ +merge/ 353123 - 7079. By Jelmer Vernooij
-
Ignore ResourceWarning on Python 3, too.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- ignore- resourcewarning /+merge/ 353528 - 7080. By Jelmer Vernooij
-
Avoid use of find_related_
paths_across_ trees. Merged from https:/
/code.launchpad .net/~jelmer/ brz/brz- git-fetch/ +merge/ 353527 - 7081. By Jelmer Vernooij
-
Accept both bytes and unicode arguments to osutils.is_inside.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- bytes-or- unicode/ +merge/ 353445 - 7082. By Jelmer Vernooij
-
Fix Git interrepository operations on Python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/brz- git-pull/ +merge/ 353197 - 7083. By Jelmer Vernooij
-
Fix an ignore test on Python 3.
Make AtomicFile a context manager.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- atomic/ +merge/ 353125 - 7084. By Jelmer Vernooij
-
Fix byte counting for HTTP readv operations.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/readv- stats/+ merge/353605 - 7085. By Jelmer Vernooij
-
Simplify Python version info tests.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/simplify- version- info/+merge/ 353729 - 7086. By Jelmer Vernooij
-
Skip undecodable argv test on Python 3.
sys.getfilesyst
emencodeerrors( ) behaviour now determines
what happens to undecodable characters in argv.Merged from https:/
/code.launchpad .net/~jelmer/ brz/skip- undecodable- argv/+merge/ 353753 - 7087. By Jelmer Vernooij
-
Fix remaining warnings when running testsuite on Python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- remaining- warnings/ +merge/ 353750 - 7088. By Jelmer Vernooij
-
Properly decode method name on Python 3.
This fixes another ~dozen tests.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/corrupt- knit/+merge/ 353613 - 7089. By Jelmer Vernooij
-
Consistently use proper strings for pack names.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/pack- fixes/+ merge/353610 - 7090. By Jelmer Vernooij
-
Fix changelog merge tests on Python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fix- changelog- merge/+ merge/353609 - 7091. By Jelmer Vernooij
-
Fix some iteration warnings on Python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fix- iteration- warnings/ +merge/ 353602 - 7092. By Jelmer Vernooij
-
Fix all but a few remaining HTTP tests on Python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/httpy/ +merge/ 353543 - 7093. By Jelmer Vernooij
-
Various fixes for tests on Python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- y/+merge/ 353193 - 7094. By Jelmer Vernooij
-
Fix e-mail tests on Python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fix- email-tests/ +merge/ 353743 - 7095. By Jelmer Vernooij
-
Fix Launchpad registration test on Python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/launchpad- test-fix/ +merge/ 353687 - 7096. By Jelmer Vernooij
-
Fix names of deprecated symbols on Python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/symbol- versioning/ +merge/ 353373 - 7097. By Jelmer Vernooij
-
Set 'tests_require' to testtools and add configobj to 'install_require'.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/update- setup/+ merge/354353 - 7098. By Jelmer Vernooij
-
On Python 3, fix testing of passthrough output when selftest fork child fails.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fix- child-fork- test/+merge/ 353754 - 7099. By Jelmer Vernooij
-
Don't rely on self._traceback
_from_test as it gets set too late on Python 3 unittest.TestCase. Merged from https:/
/code.launchpad .net/~jelmer/ brz/selftest- traceback/ +merge/ 353737 - 7100. By Jelmer Vernooij
-
Fix remaining chk_map tests on Python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- chk-map- more/+merge/ 353374 - 7101. By Jelmer Vernooij
-
Fix remaining Cython extensions on Python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fix- c-extensions/ +merge/ 353369 - 7102. By Jelmer Vernooij
-
Fix a couple more tests on Python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/some- more/+merge/ 353541 - 7103. By Jelmer Vernooij
-
Fix bad fs encoding tests on python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/bad- fs-python3/ +merge/ 353749 - 7104. By Jelmer Vernooij
-
Improve error parsing for git repositories a bit.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/parse- git-error/ +merge/ 354724 - 7105. By Jelmer Vernooij
-
Don't try to fetch peeled tags.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/check- wants/+ merge/354737 - 7106. By Jelmer Vernooij
-
Fix HTTP redirects for Git repositories.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fix- git-reidrecits/ +merge/ 354534 - 7107. By Jelmer Vernooij
-
Fix remaining deprecated function name test.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/remaining- test/+merge/ 354803 - 7108. By Jelmer Vernooij
-
Handle the Launchpad way of saying "Repository not found".
Merged from https:/
/code.launchpad .net/~jelmer/ brz/more- git-errors/ +merge/ 354801 - 7109. By Jelmer Vernooij
-
Allow port to be empty when parsing URLs.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/empty- port/+merge/ 354640 - 7110. By Jelmer Vernooij
-
Drop python3.flapping.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/drop- flapping/ +merge/ 353460 - 7111. By Jelmer Vernooij
-
Drop the whitelist for Python 3 now that all tests are passing.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- drop-whitelist/ +merge/ 353755 - 7112. By Vincent Ladeuil
-
Start preparing brz releases.
Merged from https:/
/code.launchpad .net/~vila/ brz/prepare- 3.0.0/+ merge/354935 - 7113. By Jelmer Vernooij
-
Don't use colocated branch names for derived branch directory names.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/no- colo-name/ +merge/ 354946 - 7114. By Jelmer Vernooij
-
Some refactoring around get_canonical_
inventory_ paths. * Drop the 'inventory' bit since it doesn't apply to non-inventory trees
* Move to working trees; canonicalization currently only matters there, where
files can be stored on case-insensitive (VFAT) or normalizing filesystems
(i.e. Mac OS X)
* Run tests against all working tree formats, including Git, not just InventoryTree onesThis fixes 'bzr mv' and 'bzr rename' for Git.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/brz- git-renames/ +merge/ 354952 - 7115. By Jelmer Vernooij
-
Support max_lines parameter in UTextWrapper.
The test_textwrap tests from Python upstream that we invoke test this parameter.
(Note that we don't see this test on Debian/Ubuntu, because they don't ship test_textwrap.py as part of Python)
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fix- utextwrap/ +merge/ 354948 - 7116. By Jelmer Vernooij
-
Run per_tree tests against GitRevisionTree.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/per- tree-git- revtree/ +merge/ 354530 - 7117. By Jelmer Vernooij
-
Fix sort order for walkdir items.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fix- walkdirs- thingy/ +merge/ 354990 - 7118. By Vincent Ladeuil
-
A simplified process for alpha releases
Merged from https:/
/code.launchpad .net/~vila/ brz/prepare- 3.0.0/+ merge/354985 - 7119. By Jelmer Vernooij
-
Fix displaying of diff chunks in shelf.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fix- shelve/ +merge/ 354982 - 7120. By Vincent Ladeuil
-
Release 3.0a1
Merged from https:/
/code.launchpad .net/~vila/ brz/prepare- 3.0.0/+ merge/355003 - 7121. By Vincent Ladeuil
-
Post 3.0a1 release tweaks.
Merged from https:/
/code.launchpad .net/~vila/ brz/prepare- 3.0.0/+ merge/355010 - 7122. By Jelmer Vernooij
-
Cope with very early disconnects during TCP Server tests.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fix- flaky/+ merge/355057 - 7123. By Jelmer Vernooij
-
Allow /dev/null to be a symlink.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/symlink- dev-null/ +merge/ 355166 - 7124. By Jelmer Vernooij
-
Guard against time_t overflowing in test_timestamp.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/time- t-max/+ merge/355509 - 7125. By Jelmer Vernooij
-
Improve error message if line endings in format file were corrupted.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/line- endings/ +merge/ 355463 - 7126. By Jelmer Vernooij
-
Fix byteness when we happen to write a xFF in the wrong place..
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fix- broken- pack-test/ +merge/ 355457 - 7127. By Jelmer Vernooij
-
Use WorkingTree.
_supports_ executable method rather than making assumptions based on platform. Merged from https:/
/code.launchpad .net/~jelmer/ brz/wt- executable/ +merge/ 355460 - 7128. By Jelmer Vernooij
-
Use _path2ie in a couple more places.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/path2ie- more/+merge/ 355138 - 7129. By Jelmer Vernooij
-
Some refactoring; check for features rather than a specific implementation (InventoryTree).
Merged from https:/
/code.launchpad .net/~jelmer/ brz/nomore- invtree/ +merge/ 355137 - 7130. By Jelmer Vernooij
-
Support symlinks in MemoryTransport, and add tests for Transport.readlink.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/memorytrans port-links/ +merge/ 355006 - 7131. By Jelmer Vernooij
-
Add symlink support to 'brz upload'.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/upload- symlinks/ +merge/ 355061 - 7132. By Jelmer Vernooij
-
Install dulwich by default, so git support works out of the box when installing from pip.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/default- dulwich/ +merge/ 356199 - 7133. By Jelmer Vernooij
-
Only read the .git/objects/
info/packs file if the packs file isn't listable. Merged from https:/
/code.launchpad .net/~jelmer/ brz/packs- file/+merge/ 356198 - 7134. By Jelmer Vernooij
-
When opening working trees with .git files, open the right control transport.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/git- git-file/ +merge/ 355880 - 7135. By Jelmer Vernooij
-
Fix get_canonical_path and add some basic tests for it.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/get- canonical- path/+merge/ 355879 - 7136. By Jelmer Vernooij
-
Remove unnecessary redirect handling for git.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- git-fix- http/+merge/ 356238 - 7137. By Jelmer Vernooij
-
Fix reading of packed refs on Python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/alpha- fix-git- python3/ +merge/ 356037 - 7138. By Jelmer Vernooij
-
Add progress indication for local git->git fetches.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/local- fetch-progress/ +merge/ 355878 - 7139. By Jelmer Vernooij
-
Handle some more Git error strings and convert them to specific exceptions.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/more- git-errors/ +merge/ 355811 - 7140. By Jelmer Vernooij
-
Remove unused call to get basis tree.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/remove- unused- basis/+ merge/355753 - 7141. By Jelmer Vernooij
-
Rollback https:/
/code.launchpad .net/~jelmer/ brz/python3- git-fix- http/+merge/ 356238 Merged from https:/
/code.launchpad .net/~jelmer/ brz/revert- http-redirect/ +merge/ 356684 - 7142. By Jelmer Vernooij
-
Use sys.executable rather than 'python' for ad-hoc tests.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/diff- without- python/ +merge/ 357913 - 7143. By Jelmer Vernooij
-
Support forcing the setting of a reference.
Useful for testing.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/reference- force/+ merge/355876 - 7144. By Jelmer Vernooij
-
Add a tool that monkey patches pyflakes to support lazy imports.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/flake8/ +merge/ 358593 - 7145. By Jelmer Vernooij
-
Don't hardcode the list of supported archive formats.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/git- archive- tgz/+merge/ 358746 - 7146. By Jelmer Vernooij
-
Fix flakyness of test_missing_
chk_leaf_ for_inventory. Merged from https:/
/code.launchpad .net/~jelmer/ brz/chk- leaf-tests/ +merge/ 358618 - 7147. By Jelmer Vernooij
-
Fix switching to older revisions when creating a new branch.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/colo- switch- jml/+merge/ 358607 - 7148. By Jelmer Vernooij
-
Fix some lint, and fix a FutureWarning.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/xml- compat/ +merge/ 358598 - 7149. By Jelmer Vernooij
-
Support the 'authors' revprop when creating Git commits.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/authors- revprop/ +merge/ 358537 - 7150. By Jelmer Vernooij
-
Remove some unused bzr-specific imports in breezy.git.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/unused- import/ +merge/ 358359 - 7151. By Jelmer Vernooij
-
Move breezy.fetch with mostly vf-specific code to breezy.bzr.fetch.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/move- fetch/+ merge/358358 - 7152. By Jelmer Vernooij
-
Allow revno() to return None to indicate that the revision number is not known.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/no- revno/+ merge/358346 - 7153. By Jelmer Vernooij
-
Drop support for ubuntu:X/package shortcuts, where X is a single letter representing a Ubuntu release.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/shortcuts/ +merge/ 358291 - 7154. By Jelmer Vernooij
-
Fix interactivity on Python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- interaction/ +merge/ 358288 - 7155. By Jelmer Vernooij
-
Fix docstring for BranchBuilder - it now takes filenames rather than file ids.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/branchbuild er-doc/ +merge/ 358282 - 7156. By Jelmer Vernooij
-
Fix two HTTP issues on Python 3 without tests.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- http-fixes/ +merge/ 358281 - 7157. By Jelmer Vernooij
-
Implement TreeReference.
kind_character. Merged from https:/
/code.launchpad .net/~jelmer/ brz/tree- reference- kind-character/ +merge/ 358280 - 7158. By Jelmer Vernooij
-
Report correct paths when running "brz add" in git repositories.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fix1799482/ +merge/ 357734 - 7159. By Jelmer Vernooij
-
Drop information about old bundle formats.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/old- bundle- formats/ +merge/ 357478 - 7160. By Jelmer Vernooij
-
Fix fetching between non-default colocated git branches.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/cross- branch- fetch/+ merge/356759 - 7161. By Jelmer Vernooij
-
Encode revision ids before passing into graph functions.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3- encode/ +merge/ 356755 - 7162. By Jelmer Vernooij
-
Support --bugs= argument to commit to link related bugs (not necessarily ones that were fixed).
Merged from https:/
/code.launchpad .net/~jelmer/ brz/related- bugs/+merge/ 355893 - 7163. By Jelmer Vernooij
-
Use BranchFormat8 (which supports storing references) in development-
subtree. Merged from https:/
/code.launchpad .net/~jelmer/ brz/devsubtree8 /+merge/ 355877 - 7164. By Jelmer Vernooij
-
Support uncommit on remote git branches.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/git- remote- uncommit/ +merge/ 355576 - 7165. By Jelmer Vernooij
-
Remove some unused imports.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/unused- imports/ +merge/ 358595 - 7166. By Jelmer Vernooij
-
Fix fetching of revisions that are referenced by annotated tags.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/annotated- tags/+merge/ 358536 - 7167. By Jelmer Vernooij
-
Drop dpush_strict configuration option.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/dpush- strict/ +merge/ 358475 - 7168. By Jelmer Vernooij
-
Fix parsing of foreign revision ids.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fix- foreign- commits/ +merge/ 358675 - 7169. By Jelmer Vernooij
-
Several improvements for remote Git branches (nick handling, branch references, overwrite behaviour).
Merged from https:/
/code.launchpad .net/~jelmer/ brz/remote- props/+ merge/358283 - 7170. By Jelmer Vernooij
-
Drop file_id argument from read functions in Tree.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/no- file-ids/ +merge/ 357984 - 7171. By Martin Packman
-
Tidy up _groupcompress_pyx
Merged from https:/
/code.launchpad .net/~gz/ brz/groupscompr ess_pyx_ tidy/+merge/ 358903 - 7172. By Martin Packman
-
Make --profile-imports work on Python 3
Merged from https:/
/code.launchpad .net/~gz/ brz/profile_ imports_ py3/+merge/ 358920 - 7173. By Jelmer Vernooij
-
Drop python3-specific target; the regular build is already testing python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/drop- py3-specific/ +merge/ 358922 - 7174. By Jelmer Vernooij
-
Add a flake8 test.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/run- flake8/ +merge/ 358902 - 7175. By Jelmer Vernooij
-
Sprinkle some PEP8iness.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/more- cleanups/ +merge/ 358611 - 7176. By Jelmer Vernooij
-
Build extensions on travis for Python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/improve- coverage/ +merge/ 358609 - 7177. By Martin Packman
-
Remove replacement of re.compile for lazy_regexp
Merged from https:/
/code.launchpad .net/~gz/ brz/unlazy_ reg/+merge/ 358919 - 7178. By Jelmer Vernooij
-
Fix another dozen flake8 errors.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/even- more-cleanups/ +merge/ 358931 - 7179. By Jelmer Vernooij
-
Fix 'bzr grep' in git working trees.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/git- grep/+merge/ 358605 - 7180. By Jelmer Vernooij
-
Don't show a delta for unchanged submodules.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/keep- submodule/ +merge/ 355820 - 7181. By Jelmer Vernooij
-
Make implementing Tree.all_file_ids() optional.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/optional- all-file- ids/+merge/ 358932 - 7182. By Jelmer Vernooij
-
Fix 'brz switch' in git repositories.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/git- switch/ +merge/ 358603 - 7183. By Jelmer Vernooij
-
Support committing to a bzr branch bound to a git branch.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/bzr- bound-to- git/+merge/ 355573 - 7184. By Jelmer Vernooij
-
Add missing feature for 'git' in recently added test.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/missing- feature/ +merge/ 358943 - 7185. By Martin Packman
-
Fix E999 lint error for Python 2 flake8.
Merged from https:/
/code.launchpad .net/~gz/ brz/lint_ E999/+merge/ 358945 - 7186. By Martin Packman
-
Fix E71* lint errors
Mostly moving nots around and a few equality to idenity check changes.
Merged from https:/
/code.launchpad .net/~gz/ brz/lint_ E71/+merge/ 358946 - 7187. By Jelmer Vernooij
-
Improve handling of bad bug urls:
* Raise an exception when invalid bug URLs are specified to 'brz commit'
* Print exceptions when customer log handlers raise an exception
rather than aborting altogether.Merged from https:/
/code.launchpad .net/~jelmer/ brz/bad- bug-url/ +merge/ 358942 - 7188. By Martin Packman
-
Fix E27* lint errors
Merged from https:/
/code.launchpad .net/~gz/ brz/lint_ E27/+merge/ 358947 - 7189. By Martin Packman
-
Possible fix for OverflowError in _search_key_255
Merged from https:/
/code.launchpad .net/~gz/ brz/crc_ asul/+merge/ 358941 - 7190. By Jelmer Vernooij
-
Support adding files with filenames that are just a backslash on
platforms where it is not the path separator.Merged from https:/
/code.launchpad .net/~jelmer/ brz/backslash- support/ +merge/ 355135 - 7191. By Jelmer Vernooij
-
Don't create ghost tags when testing overwrite behaviour.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/ghost- tags/+merge/ 358949 - 7192. By Jelmer Vernooij
-
Release 3.0.0 alpha 2.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/alpha2/ +merge/ 358948 - 7193. By Jelmer Vernooij
-
Some improvements to the documentation.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/docs- on-homepage/ +merge/ 358952 - 7194. By Jelmer Vernooij
-
Avoid using file ids in cat; use find_previous_path instead.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/cat- no-file- id/+merge/ 358951 - 7195. By Jelmer Vernooij
-
Update more links, add API documentation.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/more- doc-improvement s/+merge/ 358955 - 7196. By Martin Packman
-
Fix whitespace lint E241 and E251
Merged from https:/
/code.launchpad .net/~gz/ brz/lint_ E241_E251/ +merge/ 358966 - 7197. By Jelmer Vernooij
-
Fix more documentation issues: API index, Bazaar=>Breezy.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/even- more-documentat ion-fixes/ +merge/ 358965 - 7198. By Martin Packman
-
Remove use of dict.has_key() in fastimport plugin
Merged from https:/
/code.launchpad .net/~gz/ brz/lint_ W601/+merge/ 358967 - 7199. By Jelmer Vernooij
-
Require sphinx for docs building, remove docutils.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/sphinx- only/+merge/ 358957 - 7200. By Jelmer Vernooij
-
Add a basic glossary, and fix some links.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/glossary/ +merge/ 359019 - 7201. By Jelmer Vernooij
-
Use 10 minute (rather than 5 second) window when checking mtime behaviour.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/increase- time-window/ +merge/ 359026 - 7202. By Jelmer Vernooij
-
Don't report empty directories in git repositories as pending changes.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/empty- dir-changed/ +merge/ 359025 - 7203. By Jelmer Vernooij
-
Fix 'brz ignore' in git working trees.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/git- ignore/ +merge/ 359009 - 7204. By Jelmer Vernooij
-
Give a clearer warning when the gpg module is not available.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/gpg- warning/ +merge/ 358971 - 7205. By Martin Packman
-
Fix remaining whitespace lint in codebase
Merged from https:/
/code.launchpad .net/~gz/ brz/lint_ W1_W2_W3/ +merge/ 358968 - 7206. By Jelmer Vernooij
-
Don't create temporary branches in fastexport.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fastexport- empty-parents/ +merge/ 358959 - 7207. By Jelmer Vernooij
-
Simplify the iterator for Tree.list_files() to exclude file kind and file_id.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/namedtuple- list-files/ +merge/ 358354 - 7208. By Jelmer Vernooij
-
Handle overflow errors from Python 2 as well.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/timestamp- range/+ merge/359158 - 7209. By Jelmer Vernooij
-
Some more minor improvements to the docs.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/yet- more-docs/ +merge/ 359087 - 7210. By Jelmer Vernooij
-
Stop actually accepting optional file_id in many Tree methods.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/remove- more-file- ids/+merge/ 358950 - 7211. By Jelmer Vernooij
-
Add support for --fixes in Git repositories and document using Breezy with GitHub.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/working- with-github/ +merge/ 359156 - 7212. By Jelmer Vernooij
-
Remove the lp-branch-mirror command.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/kill- branch- mirror/ +merge/ 360097 - 7213. By Jelmer Vernooij
-
Fix timestamp bound checking in test_timestamp.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/timestamp- limit/+ merge/359388 - 7214. By Jelmer Vernooij
-
Remove references to bzrtools in the docs.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/doc- bzrtools/ +merge/ 359386 - 7215. By Jelmer Vernooij
-
Fix python 3.7 compatibility.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3. 7/+merge/ 359220 - 7216. By Jelmer Vernooij
-
Prevent UnicodeDecodeError on Python 2 with LANG=fr_
FR.ISO- 8859-1. Merged from https:/
/code.launchpad .net/~jelmer/ brz/non- utf8-locale/ +merge/ 360088 - 7217. By Jelmer Vernooij
-
Batch up requests for Tree.iter_
files_bytes( ) in fastexport. Merged from https:/
/code.launchpad .net/~jelmer/ brz/faster- fastexport/ +merge/ 359560 - 7218. By Jelmer Vernooij
-
s/bzr/brz in the contributing quickstart guide.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/contributin g-quickstart/ +merge/ 359486 - 7219. By Jelmer Vernooij
-
Move location_to_url to its own module.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/location/ +merge/ 359384 - 7220. By Jelmer Vernooij
-
Fix move when file was in different location, rather than removed.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/mv- bug/+merge/ 359342 - 7221. By Jelmer Vernooij
-
Fix 'bzr stats' in git repositories.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fix- git-stats/ +merge/ 359385 - 7222. By Jelmer Vernooij
-
Show colocated branch name in 'brz info'.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/info- colocated/ +merge/ 359663 - 7223. By Jelmer Vernooij
-
Don't list directories without versioned files as 'added'.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/git- empty-dirs/ +merge/ 359479 - 7224. By Jelmer Vernooij
-
Fix an occasionally failing test.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fix- spurious- 343/+merge/ 360971 - 7225. By Jelmer Vernooij
-
Display colocated branch name when switching between branches.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/switch- colocated/ +merge/ 361258 - 7226. By Jelmer Vernooij
-
Fix lp-mirror tests.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/drop- lp-mirror/ +merge/ 361111 - 7227. By Jelmer Vernooij
-
Don't throw an incomprehensible traceback when a warning filter has already been removed.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/ignorefilte rwarning/ +merge/ 360969 - 7228. By Jelmer Vernooij
-
Move the testament module to breezy.bzr.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/move- testament/ +merge/ 359939 - 7229. By Jelmer Vernooij
-
Move file-id and file-path commands (specific to file ids) to breezy.
bzr.debug_ commands. Merged from https:/
/code.launchpad .net/~jelmer/ brz/bzr- debug-commands/ +merge/ 359781 - 7230. By Jelmer Vernooij
-
Hide the ancestor-growth command.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/hide- ancestor- growth/ +merge/ 359664 - 7231. By Jelmer Vernooij
-
Move bzr-specific reconcile bits to breezy.
bzr.reconcile. Merged from https:/
/code.launchpad .net/~jelmer/ brz/move- reconcile- 1/+merge/ 359941 - 7232. By Jelmer Vernooij
-
Properly unwrap sys.stdout when writing a fast-export stream.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fast- export- default- out/+merge/ 359558 - 7233. By Jelmer Vernooij
-
Bundle the propose plugin.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/bundle- propose/ +merge/ 359484 - 7234. By Jelmer Vernooij
-
travis: Install launchpadlib from pip, since it's not available for python 3 on trusty.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/travis- 1/+merge/ 361364 - 7235. By Jelmer Vernooij
-
Fix 'brz git-objects', and add a test.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/git- objects/ +merge/ 361362 - 7236. By Jelmer Vernooij
-
Fix autodoc_rstx generation on python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/autodoc- python3/ +merge/ 361367 - 7237. By Jelmer Vernooij
-
Use absolute URLs in branch reference locations.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/reference- absolute/ +merge/ 361390 - 7238. By Jelmer Vernooij
-
Fix spurious failures in test_list_
tags_dotted_ revnos_ unsupported. Merged from https:/
/code.launchpad .net/~jelmer/ brz/spurious- 544/+merge/ 361407 - 7239. By Jelmer Vernooij
-
Add 'bzr my-proposals' command.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/my- proposals/ +merge/ 361363 - 7240. By Jelmer Vernooij
-
Fix signature handling when repacking.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/pack- signature/ +merge/ 361530 - 7241. By Jelmer Vernooij
-
Require a newer version of launchpadlib, set correct consumer name.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/user- agent/+ merge/361859 - 7242. By Jelmer Vernooij
-
Don't copy tags that don't point to valid objects.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/git- tag-fixes/ +merge/ 362001 - 7243. By Jelmer Vernooij
-
git: When sending refs to a remote server, don't send a copy of the old refs.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/only- changed- refs/+merge/ 361999 - 7244. By Jelmer Vernooij
-
propose: Some fixes for handling of Git repositories on Launchpad.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/propose- launchpad- git/+merge/ 361995 - 7245. By Jelmer Vernooij
-
Some refactoring of the Launchpad module, ahead of removing xmlrpc support.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/lp- refactoring/ +merge/ 361934 - 7246. By Jelmer Vernooij
-
Add some release notes ahead of beta1.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/release- notes/+ merge/361717 - 7247. By Jelmer Vernooij
-
Implement description getting/setting for existing Launchpad merge proposals.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/lp- mp-description/ +merge/ 361760 - 7248. By Jelmer Vernooij
-
Use tree timestamp when exporting.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/archive- tree-timestamp/ +merge/ 361709 - 7249. By Jelmer Vernooij
-
Fix GPG signature validation on Python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/verify- signatures- py3/+merge/ 361707 - 7250. By Jelmer Vernooij
-
Properly handle exceptions about hg extra fields.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/hg- field/+ merge/361706 - 7251. By Jelmer Vernooij
-
Require .gz as extension for gzipped files.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/ends- gz/+merge/ 361693 - 7252. By Jelmer Vernooij
-
Make 'default' actually return the default PGP key, as determined by PGP.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/gpg- default/ +merge/ 361531 - 7253. By Jelmer Vernooij
-
Fix default launchpadlib API URL.
- 7254. By Jelmer Vernooij
-
Support loading breezy plugins from setuptools entrypoints.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/entrypoints /+merge/ 361986 - 7255. By Jelmer Vernooij
-
Delay importing launchpadlib, so brz works for users without it.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/lp- imports/ +merge/ 362354 - 7256. By Jelmer Vernooij
-
Drop support for launchpad packaging branch up-to-date checking.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/drop- up-to-date- check/+ merge/362286 - 7257. By Jelmer Vernooij
-
Fix two typos in command help.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/doc- typos/+ merge/362285 - 7258. By Jelmer Vernooij
-
Fix python 3.7 tests on Travis.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/travis- xenial/ +merge/ 362284 - 7259. By Jelmer Vernooij
-
Ignore UserWarning on travis.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/skip- crypto- deprecation/ +merge/ 362227 - 7260. By Jelmer Vernooij
-
Support interactive login for GitLab sites.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/gitlab- interactive/ +merge/ 362154 - 7261. By Jelmer Vernooij
-
Add .base_url property to Hoster.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/propose- base-url/ +merge/ 362565 - 7262. By Jelmer Vernooij
-
Implement .close on merge proposals for {launchpad,
github, gitlab} . Merged from https:/
/code.launchpad .net/~jelmer/ brz/propose- close/+ merge/362564 - 7263. By Jelmer Vernooij
-
Add a supports_
random_ access attribute to repository. Merged from https:/
/code.launchpad .net/~jelmer/ brz/supports- random- access/ +merge/ 362619 - 7264. By Jelmer Vernooij
-
Add a MemoryTags object that provides the Tags implementation but stores tags in a dict.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/memorytags/ +merge/ 362620 - 7265. By Jelmer Vernooij
-
Add a lp+bzr URL scheme for looking up Bazaar-only branches.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/lpbzr/ +merge/ 361858 - 7266. By Jelmer Vernooij
-
Fix setting of merge proposal descriptions on gitlab.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/propose- gitlab- set-description /+merge/ 362644 - 7267. By Jelmer Vernooij
-
Don't require that short git shas have an even number of characters.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/git- short/+ merge/362643 - 7268. By Jelmer Vernooij
-
Move grep into core.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/promote- grep/+merge/ 359487 - 7269. By Jelmer Vernooij
-
Fix compatibility with newer versions of Dulwich.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/dulwich- compat/ +merge/ 362765 - 7270. By Jelmer Vernooij
-
Allow unknown HG fields in Git commit metadata when accessing native Git repositories.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/tolerate- unknown- fields/ +merge/ 363176 - 7271. By Jelmer Vernooij
-
Don't include open unmerged pull requests in 'closed'.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/github- open-closed/ +merge/ 363175 - 7272. By Jelmer Vernooij
-
Drop support for getting gitlab authentication from authentication.
conf. Merged from https:/
/code.launchpad .net/~jelmer/ brz/gitlab- auth-fix/ +merge/ 363101 - 7273. By Jelmer Vernooij
-
Don't attempt to resolve None when repo has gone away.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/github- disappeared- repo/+merge/ 363097 - 7274. By Jelmer Vernooij
-
Fix a commonly typoed word: compatibility.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/compatibili ty-typos/ +merge/ 363008 - 7275. By Jelmer Vernooij
-
Add a mention of Python 3 support in README.rst.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/update- readme/ +merge/ 363005 - 7276. By Jelmer Vernooij
-
Drop dependency on non-longer-existant grep plugin.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/git- grep-tests/ +merge/ 363003 - 7277. By Jelmer Vernooij
-
Fix git-apply and add a test.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fix- git-apply/ +merge/ 362955 - 7278. By Jelmer Vernooij
-
Raise a clearer error when not logged into e.g. GitHub.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/credentials -error/ +merge/ 362950 - 7279. By Jelmer Vernooij
-
Fix lp-find-
merge-proposal. Merged from https:/
/code.launchpad .net/~jelmer/ brz/fix- lp-find- merge-proposal/ +merge/ 362949 - 7280. By Jelmer Vernooij
-
Properly format UnexpectedInven
toryFormat errors. Merged from https:/
/code.launchpad .net/~jelmer/ brz/xml- serializer- fix/+merge/ 362713 - 7281. By Jelmer Vernooij
-
Don't report .git files as unknown.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/git- wt-reference/ +merge/ 362710 - 7282. By Jelmer Vernooij
-
fastexport: Stop specifying file_id and use tree rather than inventory function.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fix- fastexport/ +merge/ 362709 - 7283. By Jelmer Vernooij
-
Strip username from URLs before passing them to httplib.
This fixes access to Git HTTP repositories with authentication, such as bitbucket.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/git- http-username/ +merge/ 363182 - 7284. By Jelmer Vernooij
-
Add a hook for URL dereferencing.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/rewrite- url/+merge/ 362941 - 7285. By Jelmer Vernooij
-
Move .generate_ids to breezy.bzr.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/move- generate- ids/+merge/ 362711 - 7286. By Jelmer Vernooij
-
Add a purpose argument to location dereference functions.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/location- purpose/ +merge/ 362940 - 7287. By Jelmer Vernooij
-
Bump minimum dulwich version to 0.19.11.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/dulwich- version/ +merge/ 363226 - 7288. By Jelmer Vernooij
-
Add clearer error when launchpadlib is missing.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/launchpadli b-error/ +merge/ 363218 - 7289. By Jelmer Vernooij
-
Don't buffer more than a line when reading from standard input.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fix- stream- buffering/ +merge/ 363233 - 7290. By Jelmer Vernooij
-
Fix pushing of tags as part of nascent git branches.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/push- branch- tags/+merge/ 363234 - 7291. By Jelmer Vernooij
-
Split out a 'probe_from_url' method on Hoster.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/probe- url/+merge/ 362951 - 7292. By Jelmer Vernooij
-
Use time.perf_counter, which is replacing time.clock.
time.clock is going away in Python 3.8.
Also, rename osutils.timer_func to perf_counter for consistency.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/no- time-clock/ +merge/ 363892 - 7293. By Jelmer Vernooij
-
Add support for rcp-style location string for SSH operations.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/rcp- url/+merge/ 362712 - 7294. By Jelmer Vernooij
-
Support reading related branches from git configs.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/git- config- branches/ +merge/ 358140 - 7295. By Vincent Ladeuil
-
Open trunk again as 3.1.0dev1
Merged from https:/
/code.launchpad .net/~vila/ brz/trunk/ +merge/ 364041 - 7296. By Matthew Fuller
-
Fix importing on python2.7 with future.
Merged from https:/
/code.launchpad .net/~fullermd/ brz/fix- 2.7-with- future/ +merge/ 365007 - 7297. By Jelmer Vernooij
-
Set PATH correctly so pip-installed sphinx is found; fix compatibility with newer versions of Dulwich.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fix- sphinx/ +merge/ 367949 - 7298. By Jelmer Vernooij
-
Fix some issues reported by lgtm.com.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/lgtm/ +merge/ 365991 - 7299. By Jelmer Vernooij
-
Add 'bgt' as alias for 'breezy.git.tests.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/bgt/ +merge/ 364295 - 7300. By Jelmer Vernooij
-
Add a 'brz resolve-location' command.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/resolve- location/ +merge/ 363581 - 7301. By Jelmer Vernooij
-
Integrate urllib2_wrappers into http/__init__.py.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/integrate- urllib2- wrappers/ +merge/ 367308 - 7302. By Jelmer Vernooij
-
Use a more urllib3-like API for HTTP requests.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/urllib3- like/+merge/ 367618 - 7303. By Jelmer Vernooij
-
Use external patiencediff.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/external- patiencediff/ +merge/ 363891 - 7304. By Jelmer Vernooij
-
Add some help for the "git:" revision spec.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/git- revspec- help/+merge/ 367317 - 7305. By Jelmer Vernooij
-
Split mergeable bits out of breezy.bundle.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/move- mergeable/ +merge/ 358676 - 7306. By Jelmer Vernooij
-
Add a WriteGroup() context manager.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/write- group-context/ +merge/ 358465 - 7307. By Colin Watson
-
Handle renaming of launchpad.dev to launchpad.test.
Merged from https:/
/code.launchpad .net/~cjwatson/ brz/launchpad- test-domain/ +merge/ 368046 - 7308. By Jelmer Vernooij
-
Fix pushing non-mainline revisions from bzr to git.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/push- non-mainline- to-git/ +merge/ 368029 - 7309. By Jelmer Vernooij
-
Import the 'patch' command from bzrtools.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/import- patch/+ merge/365618 - 7310. By Jelmer Vernooij
-
Use standard patch functions in "bzr git-apply".
Merged from https:/
/code.launchpad .net/~jelmer/ brz/patch- silent/ +merge/ 365620 - 7311. By Jelmer Vernooij
-
Merge the 3.0 branch.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/merge- 3.0/+merge/ 368233 - 7312. By Jelmer Vernooij
-
Install github, gitlab and patiencediff dependencies on appveyor.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/appveyor/ +merge/ 368236 - 7313. By Jelmer Vernooij
-
Fix github module name in appveyor config.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/appveyor/ +merge/ 368242 - 7314. By Jelmer Vernooij
-
Avoid using inventories in breezy.merge when encountering lcas.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/lca- merge-git/ +merge/ 367321 - 7315. By Jelmer Vernooij
-
Remove WorkingTree.
find_trees, simplify detection of subtrees. Merged from https:/
/code.launchpad .net/~jelmer/ brz/detect- local-wt/ +merge/ 368240 - 7316. By Jelmer Vernooij
-
Add commit-message option to 'brz propose'.h
Merged from https:/
/code.launchpad .net/~jelmer/ brz/suggest- commit- message/ +merge/ 366610 - 7317. By Jelmer Vernooij
-
Add a 'brz land' subcommand.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/land/ +merge/ 366609 - 7318. By Jelmer Vernooij
-
Allow symbolic links to exist when checking out trees on Windows.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/win- symlink- warning/ +merge/ 363900 - 7319. By Jelmer Vernooij
-
Use contexts for progress bars where possible.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/progressbar -context/ +merge/ 358460 - 7320. By Jelmer Vernooij
-
Remove unused argument specific_fileid from show_log.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/log- unused- arg/+merge/ 368505 - 7321. By Jelmer Vernooij
-
Fix Git HTTP support.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fix- git-http/ +merge/ 368582 - 7322. By Jelmer Vernooij
-
Fix DeprecationWarning in RemoteRepositor
y.get_rev_ id_for_ revno. - 7323. By Jelmer Vernooij
-
Automatically upgrade to branch format 8 when setting branch references.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/auto- upgrade- reference/ +merge/ 355883 - 7324. By Jelmer Vernooij
-
Add a TreeChange object that can serve as alternative to a tuple returned by Tree.iter_changes.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/objects/ +merge/ 368856 - 7325. By Martin Packman
-
Fix 'invalid escape sequence' warnings in regexps
Merged from https:/
/code.launchpad .net/~gz/ brz/fix_ regexp_ escape_ deprec/ +merge/ 368855 - 7326. By Jelmer Vernooij
-
Add a quilt plugin that can do smart things with quilt patches.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/bundle- quilt/+ merge/368585 - 7327. By Jelmer Vernooij
-
Use slots on Tree{File,
Directory, Reference, Link}. Merged from https:/
/code.launchpad .net/~jelmer/ brz/slots- 1/+merge/ 368852 - 7328. By Jelmer Vernooij
-
Don't depend on the gitlab library for gitlab operations.
Instead, just use Breezy's built-in HTTP support.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/custom- gitlab/ +merge/ 367620 - 7329. By Jelmer Vernooij
-
Support running diff on tree references.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/diff- tree-reference/ +merge/ 355881 - 7330. By Jelmer Vernooij
-
Get rid of file ids in some more places.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/drop- file-id/ +merge/ 368862 - 7331. By Jelmer Vernooij
-
Use local REST implementation to access GitHub API.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/custom- github/ +merge/ 367669 - 7332. By Jelmer Vernooij
-
Fix compatibility with pre-0.19.12 versions of Dulwich.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/both- dulwich/ +merge/ 368860 - 7333. By Martin Packman
-
Update breezy.
__copyright_ _ field Merged from https:/
/code.launchpad .net/~gz/ brz/update_ copyright/ +merge/ 368866 - 7334. By Jelmer Vernooij
-
Use the new attributes on TreeChange rather than indexing.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/objects- 1/+merge/ 368859 - 7335. By Jelmer Vernooij
-
Add osutils.cache_dir function and use it where we create Breezy-specific caches.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/cachedir/ +merge/ 362708 - 7336. By Martin Packman
-
Only check https hostname if none cert_reqs=none
Merged from https:/
/code.launchpad .net/~gz/ brz/cert_ reqs_none/ +merge/ 368867 - 7337. By Jelmer Vernooij
-
Add some tests that use big files.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/big- file-test/ +merge/ 368868 - 7338. By Jelmer Vernooij
-
Merge lp:brz/3.0.
Merged from https:/
/code.launchpad .net/~brz/ brz/3.0/ +merge/ 368871 - 7339. By Jelmer Vernooij
-
Print sensible error message when an invalid argument is specified for an option.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/patch- strip-non- int/+merge/ 368870 - 7340. By Martin Packman
-
Split non-ini config methods to bedding
Merged from https:/
/code.launchpad .net/~gz/ brz/split_ config_ env/+merge/ 368863 - 7341. By Martin Packman
-
Fix use of config_dir in propose plugin.
Merged from https:/
/code.launchpad .net/~gz/ brz/bp_ propose_ config_ dir/+merge/ 368879 - 7342. By Jelmer Vernooij
-
Install quilt, so we actually run the tests on the CI.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/install- quilt/+ merge/368865 - 7343. By Jelmer Vernooij
-
Read filesystem metadata from mtab directly rather than going via psutil.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/just- read-mtab/ +merge/ 368878 - 7344. By Jelmer Vernooij
-
Set the submit branch after 'brz publish' / 'brz propose'
Merged from https:/
/code.launchpad .net/~jelmer/ brz/propose- sets-submit/ +merge/ 368883 - 7345. By Jelmer Vernooij
-
Fix corner case pushing to git.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fix- bot/+merge/ 368884 - 7346. By Martin Packman
-
Fix tests that need whoami not to be set.
Merged from https:/
/code.launchpad .net/~gz/ brz/override_ whoami_ tests/+ merge/368885 - 7347. By Jelmer Vernooij
-
Add a VersionedFiles.
add_chunks method that takes a chunk_iter. Merged from https:/
/code.launchpad .net/~jelmer/ brz/big- file-vf/ +merge/ 368882 - 7348. By Martin Packman
-
Remove win32 code using pywin32 library
Merged from https:/
/code.launchpad .net/~gz/ brz/no_ pywin32/ +merge/ 368881 - 7349. By Martin Packman
-
Relocate the bzr log file out of $HOME.
Merged from https:/
/code.launchpad .net/~gz/ brz/relocate_ brz_log/ +merge/ 368886 - 7350. By Jelmer Vernooij
-
Use find_previous_path in InterTree.
iter_changes. Merged from https:/
/code.launchpad .net/~jelmer/ brz/use- find-previous- path/+merge/ 368861 - 7351. By Vincent Ladeuil
-
Merge 3.0 into trunk resolving conflicts
Merged from https:/
/code.launchpad .net/~vila/ brz/trunk/ +merge/ 368964 - 7352. By Jelmer Vernooij
-
Pin sphinx 1.8.5 for python 2, as newer versions have dropped python 2 support.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/sphinx- python2/ +merge/ 369175 - 7353. By Jelmer Vernooij
-
Drop file_id return value from Tree.iter_
references. Merged from https:/
/code.launchpad .net/~jelmer/ brz/iter- references/ +merge/ 368977 - 7354. By Jelmer Vernooij
-
Add a Tree.get_transform method.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/get- transform/ +merge/ 368948 - 7355. By Jelmer Vernooij
-
Use paths as keys in merge_modified dictionary.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/objects- 2a/+merge/ 368929 - 7356. By Jelmer Vernooij
-
Remove file_id from transform's create_from_tree, get filter tree paths by path.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/objects- 2b/+merge/ 368930 - 7357. By Jelmer Vernooij
-
Drop file_id attribute from MergeHookParams and Tree.plan_
file_merge. Merged from https:/
/code.launchpad .net/~jelmer/ brz/objects- 2c/+merge/ 368932 - 7358. By Jelmer Vernooij
-
Add a ``calculate_
revnos` ` setting that determines when revision numbers are calculated. Merged from https:/
/code.launchpad .net/~jelmer/ brz/stores- revno/+ merge/368873 - 7359. By Jelmer Vernooij
-
Add a --include-root flag to 'brz inventory'.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/show- root/+merge/ 369473 - 7360. By Jelmer Vernooij
-
Misc fixes for interacting with GitLab repositories.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/propose- fixes/+ merge/369487 - 7361. By Jelmer Vernooij
-
Ignore UnknownFormatError in ControlDir.
find_controldir s Merged from https:/
/code.launchpad .net/~jelmer/ brz/find- controldirs- ignore- unknownformat/ +merge/ 369371 - 7362. By Jelmer Vernooij
-
Add new helper method Inventory.
get_entry_ by_path_ partial. Merged from https:/
/code.launchpad .net/~jelmer/ brz/path2inv- nested/ +merge/ 369475 - 7363. By Jelmer Vernooij
-
Add ``Tree.
get_nested_ tree`` for retrieving a nested tree from another tree. Merged from https:/
/code.launchpad .net/~jelmer/ brz/get- nested- tree/+merge/ 369476 - 7364. By Jelmer Vernooij
-
Make Repository.
find_branches an iterator. Merged from https:/
/code.launchpad .net/~jelmer/ brz/iter- branch/ +merge/ 369369 - 7365. By Jelmer Vernooij
-
Use standard syntax for the ``change_editor`` configuration option.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/change- editor- consistent/ +merge/ 369364 - 7366. By Jelmer Vernooij
-
Enable locks.steal_dead by default.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/steal- dead-default/ +merge/ 369321 - 7367. By Jelmer Vernooij
-
Don't include datestamps in filenames when reporting on binary files.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/diff- binary- weird/+ merge/369474 - 7368. By Jelmer Vernooij
-
Allow the ssh vendor to be configured in the config, rather than just using the BRZ_SSH environment variable.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/ssh- config/ +merge/ 369320 - 7369. By Jelmer Vernooij
-
Avoid using id2path in breezy.git.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/avoid- id2path- 1/+merge/ 369272 - 7370. By Jelmer Vernooij
-
Drop unused file id argument from predicate in deltas.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/predicate- file-id/ +merge/ 369209 - 7371. By Jelmer Vernooij
-
Fix a couple more issues in the propose plugin.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/more- propose- fixes/+ merge/369793 - 7372. By Jelmer Vernooij
-
Don't write a log file if we can't create the cache directory.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fix- bedding/ +merge/ 370160 - 7373. By Jelmer Vernooij
-
Move bundle code to breezy.bzr.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/move- bundle- stuff/+ merge/369483 - 7374. By Jelmer Vernooij
-
Drop file id roundtripping support in Git.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/git- drop-roundtrip/ +merge/ 369478 - 7375. By Jelmer Vernooij
-
Fix importing from remote git repositories.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/remote- git-import/ +merge/ 370029 - 7376. By Jelmer Vernooij
-
Remove Tree.get_root_id() in favour of Tree.path2id('').
Merged from https:/
/code.launchpad .net/~jelmer/ brz/get- root-id/ +merge/ 369477 - 7377. By Jelmer Vernooij
-
Fix extraction of paths from URLs when operating on remote Git repositories.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/git- http-branch- url/+merge/ 370161 - 7378. By Jelmer Vernooij
-
Use contextlib.
ExitStack rather than our homegrown OperationWithCl eanups. Merged from https:/
/code.launchpad .net/~jelmer/ brz/exitstack/ +merge/ 369203 - 7379. By Jelmer Vernooij
-
Fix iter_proposals for GitHub and GitLab.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/github- proposals- fix/+merge/ 370033 - 7380. By Jelmer Vernooij
-
Properly interpret error message about subpath on github.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fix- git-subpath/ +merge/ 371168 - 7381. By Jelmer Vernooij
-
Several more fixes for git merge proposals.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/more- git-fixes/ +merge/ 371172 - 7382. By Jelmer Vernooij
-
Add quilt_delete call.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/quilt- more/+merge/ 371831 - 7383. By Jelmer Vernooij
-
Add support for detecting conflicts in Launchpad merge proposals.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/lp- detect- conflict/ +merge/ 371775 - 7384. By Jelmer Vernooij
-
Ignore __pycache__ directories.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/gitignore/ +merge/ 371769 - 7385. By Jelmer Vernooij
-
Bundle the flake8 plugin.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/flake8- plugin/ +merge/ 371690 - 7386. By Jelmer Vernooij
-
Fix syntax error in format expansion.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fix- str/+merge/ 372312 - 7387. By Jelmer Vernooij
-
Add functions for reopening merge proposals and checking if they are closed.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/reopen- mp/+merge/ 371773 - 7388. By Jelmer Vernooij
-
Remove specific_fileids argument from Repository.
get_revision_ delta. Merged from https:/
/code.launchpad .net/~jelmer/ brz/get- delta-no- file-ids/ +merge/ 369482 - 7389. By Jelmer Vernooij
-
TreeDelta holds TreeChange objects rather than tuples of various sizes.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/delta- no-file- ids/+merge/ 369480 - 7390. By Jelmer Vernooij
-
Don't make TreeChange tuple-like objects anymore, so we can add and remove attributes as necessary.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/tree- change- without- file-id/ +merge/ 369484 - 7391. By Jelmer Vernooij
-
Add TreeDelta.copied and TreeChange.copied fields.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/delta- copied/ +merge/ 369485 - 7392. By Jelmer Vernooij
-
Avoid use of id2path in the fastimport plugin.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fastimport- no-id2path/ +merge/ 373062 - 7393. By Jelmer Vernooij
-
Fix Python3 compatibility in Cython files, and fix some warnings.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/cython3/ +merge/ 373059 - 7394. By Jelmer Vernooij
-
Port testr-run to Python3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/testr- fix/+merge/ 373054 - 7395. By Jelmer Vernooij
-
Raise an informational message when unable to interpret redirect.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fix- redirects/ +merge/ 373052 - 7396. By Jelmer Vernooij
-
Use id2path in fewer places; instead use paths.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/less- id2path- 1/+merge/ 373061 - 7397. By Jelmer Vernooij
-
Remove the unused has_or_had_id call.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/no- more-has- or-had- id/+merge/ 373227 - 7398. By Jelmer Vernooij
-
Ignore __pycache__ directories in git.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/gitignore/ +merge/ 373714 - 7399. By Jelmer Vernooij
-
Fix forking on GitHub/GitLab.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/propose- fork/+merge/ 373703 - 7400. By Jelmer Vernooij
-
Add a new ``TreeEntry.
is_unmodified` ` method, which allows
merge to check for unmodified files without relying
on the .revision attribute that is not available for Git trees.This fixes LCA merges for Git repositories.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/ie- is-same/ +merge/ 373715 - 7401. By Jelmer Vernooij
-
Add really basic zsh completion plugin.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/zsh- completion/ +merge/ 373701 - 7402. By Jelmer Vernooij
-
Remove Tree.has_id.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/remove- unused/ +merge/ 373320 - 7403. By Jelmer Vernooij
-
Support passing bytestring paths to osutils.splitpath.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/python3. 8-1/+merge/ 374051 - 7404. By Jelmer Vernooij
-
Rename init-repo to init-shared-repo.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/init- shared- repo/+merge/ 372116 - 7405. By Jelmer Vernooij
-
Merge lp:brz/3.0.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/3.0- merge/+ merge/374062 - 7406. By Jelmer Vernooij
-
Cope with non-commit tags in remote Git repositories.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/non- commit- tags/+merge/ 374398 - 7407. By Jelmer Vernooij
-
Fix "bzr send" on git repositories.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fix- git-send/ +merge/ 374755 - 7408. By Jelmer Vernooij
-
Git: Don't attempt to fetch peeled tags.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/no- peeled/ +merge/ 374409 - 7409. By Jelmer Vernooij
-
Use paging to iterate over github and gitlab pull requests.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/page- gitlab/ +merge/ 374761 - 7410. By Jelmer Vernooij
-
Use standard functions for creating Git URLs.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/git- branch- escaping/ +merge/ 374756 - 7411. By Jelmer Vernooij
-
Remove last imports of the pygithub module.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/no- more-pygithub/ +merge/ 375000 - 7412. By Jelmer Vernooij
-
Allow unknown extras in git commits when just inspecting revisions, rather than importing.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/extra- fields/ +merge/ 374765 - 7413. By Jelmer Vernooij
-
Fix support for reading from a dumb git server.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/git- dumb-server/ +merge/ 375063 - 7414. By Vincent Ladeuil
-
Merge lp:brz/3.0 after 3.0.2 release.
Merged from https:/
/code.launchpad .net/~vila/ brz/trunk/ +merge/ 375724 - 7415. By Jelmer Vernooij
-
Fix handling of no-change merges during push.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/git- push/+merge/ 375931 - 7416. By Jelmer Vernooij
-
Add iter_patched_
from_hunks implementation that calls out to the patch command. Merged from https:/
/code.launchpad .net/~jelmer/ brz/patch- api/+merge/ 375876 - 7417. By Jelmer Vernooij
-
Don't strip directory name when determining unapplied patches.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/quilt- fix/+merge/ 375653 - 7418. By Jelmer Vernooij
-
Various improvements for Git repository probing.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/git- probing/ +merge/ 375651 - 7419. By Jelmer Vernooij
-
CVS pserver URLs indicate that the pserver protocol is not supported.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/pserver/ +merge/ 375642 - 7420. By Jelmer Vernooij
-
Add an optional priority method for probers.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/prober- features/ +merge/ 375187 - 7421. By Jelmer Vernooij
-
Add a fossil plugin that warns users when they attempt to access a Fossil repository.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/probe- fossil/ +merge/ 375185 - 7422. By Jelmer Vernooij
-
Fix reopen behaviour for gitlab.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fix- reopen- gitlab/ +merge/ 374393 - 7423. By Jelmer Vernooij
-
Support following redirects for github repositories.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/github- follow- link/+merge/ 376287 - 7424. By Jelmer Vernooij
-
Fix the credits command, and add some blackbox tests for the stats plugin.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fix- stats/+ merge/376099 - 7425. By Jelmer Vernooij
-
Fix 'bzr diff --using' when no variables are specified in the template.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/diff- using-fix/ +merge/ 377088 - 7426. By Jelmer Vernooij
-
Mark 2a format as supporting tree references.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/2a- supports- tree-reference/ +merge/ 374396 - 7427. By Jelmer Vernooij
-
Fix setting of attributes on GitHub pull requests.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/github- attributes/ +merge/ 374394 - 7428. By Jelmer Vernooij
-
Skip trace test when directory creation always succeeds.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/trace- dir-exists/ +merge/ 377115 - 7429. By Jelmer Vernooij
-
Merge lp:brz/3.0.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/merge- 3.0/+merge/ 377116 - 7430. By Jelmer Vernooij
-
github: Handle 403s for pull request creation.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/github- perm-denied/ +merge/ 377117 - 7431. By Jelmer Vernooij
-
Add a PatchesApplied context manager that provides a copy of a tree with patches applied.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/transform- patches/ +merge/ 375884 - 7432. By Jelmer Vernooij
-
Add a MergeProposal.
get_merged_ by method. Merged from https:/
/code.launchpad .net/~jelmer/ brz/merged- by/+merge/ 377146 - 7433. By Jelmer Vernooij
-
Ignore ghost tags when interacting with remote Git repositories.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/git- present- only/+merge/ 377144 - 7434. By Jelmer Vernooij
-
Add MergeProposal.
get_merged_ at(). Merged from https:/
/code.launchpad .net/~jelmer/ brz/merged- at/+merge/ 377275 - 7435. By Jelmer Vernooij
-
Add functions for managing projects.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/project- management/ +merge/ 376820 - 7436. By Jelmer Vernooij
-
Add a recurse_nested argument to Tree.list_files.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/follow- tree-references -list-files/ +merge/ 374066 - 7437. By Jelmer Vernooij
-
Add recurse_nested argument to Tree.iter_
entries_ by_dir. Merged from https:/
/code.launchpad .net/~jelmer/ brz/follow- tree-references -iter-entries- by-dir/ +merge/ 374108 - 7438. By Jelmer Vernooij
-
Add support for tree references in id2path.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/follow- tree-references -id2path/ +merge/ 374163 - 7439. By Jelmer Vernooij
-
Move the propose module into core.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/propose- core/+merge/ 374757 - 7440. By Jelmer Vernooij
-
Add a Mercurial prober that mentions that mercurial repositories are unsupported.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/probe- hg/+merge/ 375181 - 7441. By Jelmer Vernooij
-
Port the rewrite plugin to breezy.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/rebase/ +merge/ 374758 - 7442. By Jelmer Vernooij
-
Support checking out nested trees in "bzr branch", including for git repositories.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/follow- tree-references -branch/ +merge/ 374397 - 7443. By Jelmer Vernooij
-
Add strip_segment_
parameters function. Merged from https:/
/code.launchpad .net/~jelmer/ brz/strip- segment- parameters/ +merge/ 377479 - 7444. By Jelmer Vernooij
-
Don't attempt to set the title when updating the commit message in GitHub.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/github- title-not- commit- message/ +merge/ 377480 - 7445. By Jelmer Vernooij
-
Add basic svn plugin that warns the user when they attempt to access a svn working tree.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/probe- svn/+merge/ 375183 - 7446. By Jelmer Vernooij
-
Add Hoster.
merge_proposal_ description_ format and common function for determining title. Merged from https:/
/code.launchpad .net/~jelmer/ brz/merge- proposal- text/+merge/ 377672 - 7447. By Jelmer Vernooij
-
Fix working tree update of incremental lossy push.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/lossy- incremental/ +merge/ 377743 - 7448. By Jelmer Vernooij
-
Use find_previous_path rather than id2path in one more place in breezy.git.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/previous- path/+merge/ 377794 - 7449. By Jelmer Vernooij
-
Fix WorkingTree.
iter_references , and add test. Merged from https:/
/code.launchpad .net/~jelmer/ brz/iter- tree-references -lock/+ merge/377793 - 7450. By Jelmer Vernooij
-
Support importing tree reference info from Git.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/interbranch -update- references/ +merge/ 377797 - 7451. By Jelmer Vernooij
-
Move tree reference info functions to workingtree.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/move- reference- functions/ +merge/ 377800 - 7452. By Jelmer Vernooij
-
Store bzr reference information by file id rather than by path.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/reference- info-file- id/+merge/ 377801 - 7453. By Jelmer Vernooij
-
Support fetching / pushing reference information to remote branches.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/branch- reference- remote/ +merge/ 377806 - 7454. By Jelmer Vernooij
-
Support recurse argument to id2path.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/id2path- recurse/ +merge/ 377805 - 7455. By Jelmer Vernooij
-
Don't show submodules that are not checked out as deltas.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/git- submodule- not-checked- out/+merge/ 377807 - 7456. By Jelmer Vernooij
-
Attempt to fix spurious test failures by flushing file buffers.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/big- file/+merge/ 377846 - 7457. By Jelmer Vernooij
-
Return a FetchResult object from Repository.fetch / Branch.fetch.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fetchresult /+merge/ 377811 - 7458. By Jelmer Vernooij
-
Fix invalid escape sequence errors in rebase plugin on Python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/rewrite- escape/ +merge/ 377972 - 7459. By Jelmer Vernooij
-
Support importing Git submodules as tree references.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fix- submodule- import/ +merge/ 378021 - 7460. By Jelmer Vernooij
-
Make add_raw_records a chunked API.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/add- raw-records/ +merge/ 378070 - 7461. By Jelmer Vernooij
-
Pass chunks rather than full texts to compress().
Merged from https:/
/code.launchpad .net/~jelmer/ brz/compress/ +merge/ 378071 - 7462. By Jelmer Vernooij
-
Add a 'lines' storage kind.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/file- content- factory/ +merge/ 378072 - 7463. By Jelmer Vernooij
-
Consistently provide bytes_length to make_delta.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/require- bytes-length/ +merge/ 378076 - 7464. By Jelmer Vernooij
-
Add a size attribute to ContentFactory.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/cf- size/+merge/ 378080 - 7465. By Jelmer Vernooij
-
Attempt to batch operations when fastexporting a remote bzr repository.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fastexport- perf/+merge/ 378079 - 7466. By Jelmer Vernooij
-
Add DirectAccess.
add_raw_ record. Merged from https:/
/code.launchpad .net/~jelmer/ brz/add- raw-record/ +merge/ 378085 - 7467. By Jelmer Vernooij
-
Fix finding Launchpad merge proposals by URL.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fix- land/+merge/ 378081 - 7468. By Jelmer Vernooij
-
Add VersionedFile.
iter_bytes_ as. Merged from https:/
/code.launchpad .net/~jelmer/ brz/iter- bytes-as/ +merge/ 378338 - 7469. By Jelmer Vernooij
-
Properly use inheritance for InventoryTree.
_get_file_ revision Merged from https:/
/code.launchpad .net/~jelmer/ brz/split- plan/+merge/ 378337 - 7470. By Jelmer Vernooij
-
Use chunks rather than fulltexts for inventories where possible.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/inventory- chunks/ +merge/ 378341 - 7471. By Jelmer Vernooij
-
Drop more roundtripping support in Git.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/drop- roundtripping/ +merge/ 378336 - 7472. By Jelmer Vernooij
-
Add the ability to create work-in-progress merge requests.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/wip- proposal/ +merge/ 378212 - 7473. By Jelmer Vernooij
-
Add VersionedFiles.
add_content. Merged from https:/
/code.launchpad .net/~jelmer/ brz/add- content/ +merge/ 378347 - 7474. By Jelmer Vernooij
-
In 'brz add', ignore --file-ids-from for trees that do not support file ids.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/add- file-ids- from/+merge/ 378351 - 7475. By Jelmer Vernooij
-
Add support for a --color=
{auto,never, always} argument to 'brz diff'. Merged from https:/
/code.launchpad .net/~jelmer/ brz/colordiff/ +merge/ 374749 - 7476. By Jelmer Vernooij
-
Merge the 3.0 branch.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/merge- 3.0/+merge/ 378383 - 7477. By Jelmer Vernooij
-
Fix handling of empty files with C extensions.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fix- pyx-empty- file/+merge/ 378419 - 7478. By Jelmer Vernooij
-
Default to running with Python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/default- python3/ +merge/ 378411 - 7479. By Jelmer Vernooij
-
Fix compatibility with newer versions of paramiko, which break on noise before keys in pem files.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/paramiko- compat/ +merge/ 378480 - 7480. By Jelmer Vernooij
-
Actually run the python2 tests in 'check-ci', specify python to use in travis.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fix- travis/ +merge/ 378632 - 7481. By Jelmer Vernooij
-
Disable file ids for content filter stack.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/stack- no-file- id/+merge/ 378633 - 7482. By Jelmer Vernooij
-
Fix travis build: cope with newer versions of coverage module.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/coverage- compat/ +merge/ 378637 - 7483. By Jelmer Vernooij
-
Fix compatibility with newer versions of coverage module.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/coverage- compat/ +merge/ 378693 - 7484. By Jelmer Vernooij
-
More improvements to make tests success with Python 3.8.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/3.8- compat/ +merge/ 378692 - 7485. By Jelmer Vernooij
-
Follow symrefs when pushing to git repositories.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/git- follow- symref/ +merge/ 378769 - 7486. By Jelmer Vernooij
-
Move the logic behind find_previous_path onto InterTree, so it can be overriden.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/intertree- find-target- path/+merge/ 369202 - 7487. By Jelmer Vernooij
-
parse_text_bytes now takes a list of lines.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/chk- inventory- iter/+merge/ 378772 - 7488. By Jelmer Vernooij
-
More chunkification of groupcompress APIs.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/extract/ +merge/ 378773 - 7489. By Jelmer Vernooij
-
Use InterTree object when looking for renames.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/intertree- renames/ +merge/ 378777 - 7490. By Jelmer Vernooij
-
Ignore ghost tags when pushing to a remote git repo.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/ghost- tags/+merge/ 378930 - 7491. By Jelmer Vernooij
-
Start release notes/whatsnew for Breezy 3.2.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/3.2- notes/+ merge/379188 - 7492. By Jelmer Vernooij
-
Drop python2 support.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/no- more-python2/ +merge/ 378694 - 7493. By Jelmer Vernooij
-
Drop unnecessary imports from __future__.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/drop- future/ +merge/ 379372 - 7494. By Jelmer Vernooij
-
Drop the 'brz lp-propose' command in favour of 'brz propose'.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/propose- more/+merge/ 379264 - 7495. By Jelmer Vernooij
-
Merge lp:brz/3.1.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/trunk- 3.1/+merge/ 379600 - 7496. By Jelmer Vernooij
-
Use os.scandir.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/scandir2/ +merge/ 379604 - 7497. By Jelmer Vernooij
-
Merge the lp:brz/3.1 branch.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/trunk- merge-3. 1/+merge/ 380392 - 7498. By Jelmer Vernooij
-
Fix typo: maintainerS_
can_modify has an extra S, in GitHub pull requests. Merged from https:/
/code.launchpad .net/~jelmer/ brz/github- extra-s/ +merge/ 380394 - 7499. By Jelmer Vernooij
-
Merge lp:brz/3.1.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/merge- 3.1/+merge/ 381004 - 7500. By Jelmer Vernooij
-
Move InvalidRevisionSpec to breezy.
revisionspec. Merged from https:/
/code.launchpad .net/~jelmer/ brz/revspec- errors/ +merge/ 381196 - 7501. By Jelmer Vernooij
-
Merge the 3.1 branch.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/trunk- merge-3. 1/+merge/ 383481 - 7502. By Jelmer Vernooij
-
Drop support for python 3.4 in appveyor.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/travis- 3.5-pre/ +merge/ 383536 - 7503. By Jelmer Vernooij
-
Drop python 2 dependencies in byoci.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/byov- no-py3/ +merge/ 384841 - 7504. By Jelmer Vernooij
-
Add a GitHub action.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/github- actions/ +merge/ 384477 - 7505. By Jelmer Vernooij
-
Fix and clean up Windows functions.
We no longer need special handling for os.environ, as it's unicode now.
Assume that ctypes.windll is available on Windows.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/windows- cleanup/ +merge/ 384478 - 7506. By Jelmer Vernooij
-
iter_files_bytes can return iterators.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/iter- bytes/+ merge/378776 - 7507. By Jelmer Vernooij
-
Merge lp:brz/3.1.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/merge- 3.1/+merge/ 384927 - 7508. By Jelmer Vernooij
-
Move launchpad hoster support to the launchpad plugin.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/move- launchpad/ +merge/ 384931 - 7509. By Jelmer Vernooij
-
Parse stderr from remote git servers when they hang up.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/git- stderr- lines/+ merge/384935 - 7510. By Jelmer Vernooij
-
Set cython language level to Python 3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/cython- language- level/+ merge/385312 - 7511. By Jelmer Vernooij
-
Merge lp:brz/3.1.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/merge- 3.1/+merge/ 385542 - 7512. By Jelmer Vernooij
-
Avoid using fork when running the testsuite in github actions.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/actions- no-fork/ +merge/ 385565 - 7513. By Jelmer Vernooij
-
Drop appveyor + travis configuration.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/drop- travis- appveyor/ +merge/ 385578 - 7514. By Jelmer Vernooij
-
Avoid deprecated behaviour in ElementTree.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/pypy3/ +merge/ 385611 - 7515. By Jelmer Vernooij
-
Mark pypy3 build as experimental since it currently fails.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/actions- disable- pypi/+merge/ 385653 - 7516. By Jelmer Vernooij
-
Merge lp:brz/3.1.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/merge- 3.1/+merge/ 386125 - 7517. By Jelmer Vernooij
-
Merge lp:brz/3.1.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/merge- 3.1/+merge/ 386223 - 7518. By Jelmer Vernooij
-
Update installation instructions, explaining need for Python 3.5+ and optional dependencies.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/trunk- 3.5/+merge/ 386230 - 7519. By Jelmer Vernooij
-
Merge lp:brz/3.1.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/merge- 3.1/+merge/ 387628 - 7520. By Jelmer Vernooij
-
Merge lp:brz/3.1.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/merge- 3.1/+merge/ 388173 - 7521. By Jelmer Vernooij
-
Merge lp:brz/3.1.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/merge- 3.1/+merge/ 389690 - 7522. By Colin Watson
-
Remove breezy.git workaround for bazaar.
launchpad. net. Merged from https:/
/code.launchpad .net/~cjwatson/ brz/remove- lp-workaround/ +merge/ 393710 - 7523. By Colin Watson
-
Fix handling of git.http option.
Merged from https:/
/code.launchpad .net/~cjwatson/ brz/fix- loggerhead- git-option/ +merge/ 393708 - 7524. By Colin Watson
-
Define a Launchpad 'test' domain rather than 'dev'.
Merged from https:/
/code.launchpad .net/~cjwatson/ brz/lp- test-uris/ +merge/ 393711 - 7525. By Jelmer Vernooij
-
Disable pypy3 build.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/github- actions/ +merge/ 394156 - 7526. By Jelmer Vernooij
-
Merge lp:brz/3.1.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/merge- 3.1/+merge/ 394038 - 7527. By Jelmer Vernooij
-
Merge lp:brz/3.1
Merged from https:/
/code.launchpad .net/~jelmer/ brz/merge- 3.1/+merge/ 396037 - 7528. By Gustav Hartvigsson
-
Drop documentation for removed API API.
Merged from https:/
/code.launchpad .net/~gustav- hartvigsson/ brz/removed- api-doc/ +merge/ 396033 - 7529. By Gustav Hartvigsson
-
Mention the need to load bzr or git modules in the docs.
Merged from https:/
/code.launchpad .net/~gustav- hartvigsson/ brz/fix- integration- docs/+merge/ 396094 - 7530. By Jelmer Vernooij
-
Merge lp:brz/3.1.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/merge- 3.1-fix- build/+ merge/398324 - 7531. By Jelmer Vernooij
-
Merge lp:brz/3.1.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/merge- 3.1/+merge/ 400002 - 7532. By Jelmer Vernooij
-
Merge lp:brz/3.1.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/merge- 3.1/+merge/ 400593 - 7533. By Jelmer Vernooij
-
Merge lp:brz/3.2.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/merge- 3.2/+merge/ 407445 - 7534. By Jelmer Vernooij
-
Merge lp:brz/3.2.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/merge- 3.2/+merge/ 407455 - 7535. By Jelmer Vernooij
-
Switch the Breezy entrypoint code to Rust!
Merged from https:/
/code.launchpad .net/~brz/ brz/brz. rs/+merge/ 407393 - 7536. By Martin Packman
-
Make flake8 source test behave
Merged from https:/
/code.launchpad .net/~gz/ brz/flake8_ source_ test/+merge/ 407491 - 7537. By Jelmer Vernooij
-
Add some more typing hints.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/typing- fixes/+ merge/407806 - 7538. By Jelmer Vernooij
-
Merge lp:brz/3.2.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/merge- 3.2/+merge/ 409076 - 7539. By Jelmer Vernooij
-
Install setuptools-rust.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/install- rust-setuptools /+merge/ 409276 - 7540. By Jelmer Vernooij
-
Invoke brz directly, not via Python.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/invoke- brz/+merge/ 409289 - 7541. By Jelmer Vernooij
-
Set PYTHONPATH.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/pythonpath/ +merge/ 409294 - 7542. By Jelmer Vernooij
-
Prevent DeprecationWarnings from Dulwich.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/newer- dulwich/ +merge/ 411819 - 7543. By Jelmer Vernooij
-
fix testr.conf after move to brz.rs.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fix- testr-rs/ +merge/ 411818 - 7544. By Jelmer Vernooij
-
Remove Tree.id2path.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/id2path/ +merge/ 411822 - 7545. By Jelmer Vernooij
-
Add MatchesTreeChanges matcher.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/matcher/ +merge/ 411824 - 7546. By Jelmer Vernooij
-
Move tuned_gzip to breezy.bzr.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/tuned- gzip/+merge/ 411821 - 7547. By Jelmer Vernooij
-
Avoid path2id in some tests.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/path2id- tests/+ merge/411827 - 7548. By Jelmer Vernooij
-
Avoid path2id in more places in tests.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/path2id- tests-2/ +merge/ 411829 - 7549. By Jelmer Vernooij
-
Use absolute paths for plugin paths.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fix- plugins/ +merge/ 411876 - 7550. By Jelmer Vernooij
-
Merge lp:brz/3.2.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/merge- 3.2/+merge/ 411895 - 7551. By Jelmer Vernooij
-
Rely purely on Python's internal notion of filesystem encoding and use surrogate escapes in internal path strings.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/allow- surrogates/ +merge/ 411817 - 7552. By Jelmer Vernooij
-
Avoid path2id in some more cases.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/path2id- 1/+merge/ 411898 - 7553. By Jelmer Vernooij
-
Remove more references to the Bazaar site.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/docs/ +merge/ 412040 - 7554. By Jelmer Vernooij
-
Update PYTHONPATH to include local breezy package when running from source.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/auto- path/+merge/ 412034 - 7555. By Jelmer Vernooij
-
Actually set filesystem encoding.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/set- fs-enc/ +merge/ 412026 - 7556. By Jelmer Vernooij
-
Points wiki links to Breezy wiki.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/wiki/ +merge/ 413434 - 7557. By Jelmer Vernooij
-
Merge lp:brz/3.2.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/merge- 3.2/+merge/ 413480 - 7558. By Jelmer Vernooij
-
Some work supporting git as default format.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/default- format- git/+merge/ 413481 - 7559. By Jelmer Vernooij
-
Avoid file and revision ids as much as possible in merge tests.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/merge- builder/ +merge/ 413490 - 7560. By Jelmer Vernooij
-
Some more improvements to handle git as default format.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/default- format- git/+merge/ 413492 - 7561. By Jelmer Vernooij
-
Drop unnnecessary use of file ids.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/unnecessary -file-id/ +merge/ 413547 - 7562. By Jelmer Vernooij
-
Add support for --recurse-nested argument to 'brz export'.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/export- nested/ +merge/ 413552 - 7563. By Jelmer Vernooij
-
Merge lp:brz/3.2.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/merge- 3.2/+merge/ 413643 - 7564. By Jelmer Vernooij
-
Merge lp:brz/3.2.
Merged from https:/
/code.launchpad .net/~brz/ brz/3.2/ +merge/ 413826 - 7565. By Jelmer Vernooij
-
Merge lp:brz/3.2.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/merge- 3.2/+merge/ 414470 - 7566. By Jelmer Vernooij
-
Document dependency on rust and other dependencies.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/install- rust/+merge/ 414895 - 7567. By Jelmer Vernooij
-
Update gitignore list for new rust files.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/gitignore/ +merge/ 414987 - 7568. By Jelmer Vernooij
-
Merge lp:brz/3.2.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/merge- 3.2/+merge/ 416554 - 7569. By Jelmer Vernooij
-
Remove unused import of the imp module.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/move- imp/+merge/ 421148 - 7570. By Jelmer Vernooij
-
Fix some leaks.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/leaks/ +merge/ 421165 - 7571. By Jelmer Vernooij
-
Merge 3.2.2
Merged from https:/
/code.launchpad .net/~jelmer/ brz/merge- 3.2.2/+ merge/417131 - 7572. By Jelmer Vernooij
-
Fix more leaks.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/leaks/ +merge/ 421187 - 7573. By Jelmer Vernooij
-
Drop backwards compatibility code for python < 3.6.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/version- info/+merge/ 422582 - 7574. By Jelmer Vernooij
-
git: Avoid reading entire files into memory.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/http- chunked/ +merge/ 422588 - 7575. By Jelmer Vernooij
-
Drop encoding support, consistent with dulwich.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/git- compress/ +merge/ 424451 - 7576. By Jelmer Vernooij
-
Support insteadOf / pushInsteadOf in git config.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/apply- instead- of/+merge/ 425871 - 7577. By Jelmer Vernooij
-
Remove more uses of lazy_imports, move ids in Tree.add() to end of argument list.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fix- datetime/ +merge/ 426102 - 7578. By Jelmer Vernooij
-
Fix date: in git repositories.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fix- datetime/ +merge/ 426105 - 7579. By Jelmer Vernooij
-
Some workspace improvements.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/workspace- improvements/ +merge/ 423531 - 7580. By Jelmer Vernooij
-
git: Improve handling of mercurial magic.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/rebase- source/ +merge/ 422589 - 7581. By Jelmer Vernooij
-
Drop test prefix "python3." since we no longer need it.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/drop- test-prefix/ +merge/ 426132 - 7582. By Jelmer Vernooij
-
Merge lp:brz/3.2.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/merge- 3.2/+merge/ 426212 - 7583. By Jelmer Vernooij
-
Add rust-based rio module.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/rio. rs/+merge/ 407412 - 7584. By Jelmer Vernooij
-
Fix handling of --diff-options.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fix- diff-using/ +merge/ 426326 - 7585. By Jelmer Vernooij
-
Drop ids from MutableTree.add API.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/add- no-id/+ merge/426216 - 7586. By Jelmer Vernooij
-
Catch more specific exceptions.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/version- info/+merge/ 422586 - 7587. By Jelmer Vernooij
-
Use system merge3 module.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/system- merge3/ +merge/ 396662 - 7588. By Jelmer Vernooij
-
Add 'brz version-info --format=yaml'.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/rio- to-yaml/ +merge/ 426494 - 7589. By Jelmer Vernooij
-
Move recordcounter to bzr
Merged from https:/
/code.launchpad .net/~jelmer/ brz/move- recordcounter/ +merge/ 426499 - 7590. By Jelmer Vernooij
-
Use yaml rather than rio for lock directories.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/lockdir- yaml/+merge/ 426495 - 7591. By Jelmer Vernooij
-
Remove deprecated WorkingTree.
auto_resolve. Merged from https:/
/code.launchpad .net/~jelmer/ brz/undeprecate -autoresolve/ +merge/ 411826 - 7592. By Jelmer Vernooij
-
Fix news_merge imports.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fix- news-merge/ +merge/ 426510 - 7593. By Jelmer Vernooij
-
Install yaml.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/install- yaml/+merge/ 426594 - 7594. By Jelmer Vernooij
-
Install merge3 in CI.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/install- merge3/ +merge/ 426595 - 7595. By Jelmer Vernooij
-
Merge lp:brz/3.2.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/merge- 3.2/+merge/ 426593 - 7596. By Jelmer Vernooij
-
bashcomp: Preserve environment when invoking brz.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/bashcomp- path/+merge/ 426596 - 7597. By Jelmer Vernooij
-
use google docstrings in some places, fixing errors from pydoctor in the process.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/google- docstrings- 1/+merge/ 426598 - 7598. By Jelmer Vernooij
-
Move rio to breezy.bzr.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/move- rio/+merge/ 426498 - 7599. By Jelmer Vernooij
-
s/Hoster/Forge/
Merged from https:/
/code.launchpad .net/~jelmer/ brz/forge/ +merge/ 423445 - 7600. By Jelmer Vernooij
-
Rename breezy.propose to breezy.forge.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/propose- forge/+ merge/426697 - 7601. By Jelmer Vernooij
-
Fix consistency for nonce type in lockdir.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/lock- fixes/+ merge/426915 - 7602. By Jelmer Vernooij
-
Update path to rio Cython module in bzrignore.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/update- ignore/ +merge/ 426977 - 7603. By Jelmer Vernooij
-
Move metadata to setup.cfg where possible.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/use- setup-cfg/ +merge/ 426976 - 7604. By Jelmer Vernooij
-
Split out ProtectedBranch
HookDeclined. Merged from https:/
/code.launchpad .net/~jelmer/ brz/protected- branch- hook/+merge/ 426975 - 7605. By Jelmer Vernooij
-
Simplify setup.py.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/simplify- setup/+ merge/426987 - 7606. By Jelmer Vernooij
-
Disable known failing test_build_
and_install on GitHub. Merged from https:/
/code.launchpad .net/~jelmer/ brz/skip- test-on- github/ +merge/ 426991 - 7607. By Jelmer Vernooij
-
Fix syntax of maintainer in setup.py.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fix- setup-maintaine r/+merge/ 426992 - 7608. By Jelmer Vernooij
-
Fix handling of chunked HTTP requests.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fix- git-push- chunked/ +merge/ 426994 - 7609. By Jelmer Vernooij
-
Fix casing in header check for chunked encoding.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fix- git-push- chunked/ +merge/ 426995 - 7610. By Jelmer Vernooij
-
Move some more errors.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/move- errors/ +merge/ 426962 - 7611. By Jelmer Vernooij
-
Move hashcache.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/move- hashcache/ +merge/ 426996 - 7612. By Jelmer Vernooij
-
Move static_tuple to breezy.bzr.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/move- static- tuple/+ merge/426993 - 7613. By Jelmer Vernooij
-
Convert SymrefLoop to BranchReference
Loop. Merged from https:/
/code.launchpad .net/~jelmer/ brz/branch- reference- loop/+merge/ 426997 - 7614. By Jelmer Vernooij
-
Add MergeProposal.
set_target_ branch( ). Merged from https:/
/code.launchpad .net/~jelmer/ brz/set- target- branch/ +merge/ 426999 - 7615. By Jelmer Vernooij
-
Raise custom error for unknown encodings in Git commits.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/lookup- error/+ merge/428975 - 7616. By Jelmer Vernooij
-
Improve handling of refs for remote git branches.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/git- ref-fix/ +merge/ 429012 - 7617. By Jelmer Vernooij
-
Move UnsupportedProt
ocol, FileExists and NoSuchFile from breezy.errors to breezy.transport. Merged from https:/
/code.launchpad .net/~jelmer/ brz/move- errors/ +merge/ 428740 - 7618. By Jelmer Vernooij
-
By default, don't push tags when proposing changes.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/propose- no-tags/ +merge/ 428739 - 7619. By Jelmer Vernooij
-
Handle remove symref loops.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/symrefloop/ +merge/ 429029 - 7620. By Jelmer Vernooij
-
Simplify remote git branch handling.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/simplify- remote- git/+merge/ 426998 - 7621. By Jelmer Vernooij
-
Fix remote branch reference handling for git.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/git- remote- branch- reference/ +merge/ 429089 - 7622. By Jelmer Vernooij
-
Use authentication.conf for storing forge credentials.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/lp- creds/+ merge/429101 - 7623. By Jelmer Vernooij
-
Launchpad: Fix instance iteration.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/lp- fix-iter/ +merge/ 429146 - 7624. By Jelmer Vernooij
-
Improve handling of remote git trees.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/remote- git-trees/ +merge/ 429168 - 7625. By Jelmer Vernooij
-
Fix gitlab API access; now seems to reject ';' as separator of url parameters.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/gitlab- state-value/ +merge/ 429228 - 7626. By Jelmer Vernooij
-
Avoid deprecated urllib.
parse.{ splittype, splitport, splithost} . Merged from https:/
/code.launchpad .net/~jelmer/ brz/split- url/+merge/ 429225 - 7627. By Jelmer Vernooij
-
Add support for create_
signatures= when-possible Merged from https:/
/code.launchpad .net/~jelmer/ brz/create- signatures- when-possible/ +merge/ 429316 - 7628. By Jelmer Vernooij
-
Support accessing git branch configuration.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/git- config- section- options/ +merge/ 429396 - 7629. By Jelmer Vernooij
-
Fix flake8 with newer versions of flake8.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/fix- flake8/ +merge/ 429645 - 7630. By Jelmer Vernooij
-
Allow newer versions of pyo3.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/pyo3- version/ +merge/ 419982 - 7631. By Jelmer Vernooij
-
Add link to Matrix room, point to new IRC channel.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/matrix- room/+merge/ 429577 - 7632. By Jelmer Vernooij
-
Improve storage of Launchpad credentials in authentication.conf
Merged from https:/
/code.launchpad .net/~jelmer/ brz/lp- back-compat/ +merge/ 429528 - 7633. By Jelmer Vernooij
-
Support name argument in ControlDir.
push_branch. Merged from https:/
/code.launchpad .net/~jelmer/ brz/push- to-named/ +merge/ 429760 - 7634. By Jelmer Vernooij
-
Only update working tree when pushing to active branch.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/only- if-active/ +merge/ 429774 - 7635. By Jelmer Vernooij
-
gitlab: Fix syntax error dealing with merge proposal conflicts.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/mp- reason/ +merge/ 429898 - 7636. By Jelmer Vernooij
-
Fix compatibility with modern dulwich.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/pack- changes/ +merge/ 429890 - 7637. By Jelmer Vernooij
-
Fix exception initialization for unsupported formats
Merged from https:/
/code.launchpad .net/~jelmer/ brz/cvsdir/ +merge/ 429907 - 7638. By Jelmer Vernooij
-
Add a docker file.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/container/ +merge/ 429830 - 7639. By Jelmer Vernooij
-
Fix import of BranchReference
Loop. Merged from https:/
/code.launchpad .net/~jelmer/ brz/symref/ +merge/ 429915 - 7640. By Alexander Grund <email address hidden>
-
fastimport: Open stdin in binary mode
Merged from https:/
/code.launchpad .net/~jelmer/ brz/patch- 2/+merge/ 430055 - 7641. By Alexander Grund <email address hidden>
-
Add missing controldir import to branch_updater
Merged from https:/
/code.launchpad .net/~jelmer/ brz/patch- 1/+merge/ 430054 - 7642. By Jelmer Vernooij
-
Avoid deprecated distutils.version.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/avoid- deprecated/ +merge/ 430255 - 7643. By Jelmer Vernooij
-
Remove obsolete __cmp__.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/cmp/ +merge/ 430343 - 7644. By Jelmer Vernooij
-
Avoid osutils.mkdtemp.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/tempdir/ +merge/ 430341 - 7645. By Jelmer Vernooij
-
Return canonical GitHub URLs.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/canonical- url/+merge/ 430562 - 7646. By Jelmer Vernooij
-
Lazy load github mps
Merged from https:/
/code.launchpad .net/~jelmer/ brz/github- lazy/+merge/ 430713 - 7647. By Jelmer Vernooij
-
Convert multiple authors to the Co-authored-by field.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/co- author/ +merge/ 430849 - 7648. By Jelmer Vernooij
-
Fix handling of empty directories in iter_changes
Merged from https:/
/code.launchpad .net/~jelmer/ brz/find- related- paths-git- directories/ +merge/ 430853 - 7649. By Jelmer Vernooij
-
Add dependencies on setup.py prerequisites in pyproject.toml.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/packaging- version/ +merge/ 430855 - 7650. By Jelmer Vernooij
-
Add extra for PGP.
Merged from https:/
/code.launchpad .net/~jelmer/ brz/gpg- dep/+merge/ 430854 - 7651. By Jelmer Vernooij
-
Add news
- 7652. By Jelmer Vernooij
-
Update release notes.
- 7653. By Jelmer Vernooij
-
Update series in releaser.conf.
- 7654. By Jelmer Vernooij
-
s/releaser/
disperse/ - 7655. By Jelmer Vernooij
-
Include rust files.
- 7656. By Jelmer Vernooij
-
Include some more files.
- 7657. By Jelmer Vernooij
-
Release 3.3.0.
- 7658. By Jelmer Vernooij
-
Start on 3.3.1.
- 7659. By Jelmer Vernooij
-
Don't ship brz executable, as it is now binary.
- 7660. By Jelmer Vernooij
-
Also update versions in Cargo.toml.
- 7661. By Jelmer Vernooij
-
Only ship breezy/*
- 7662. By Jelmer Vernooij
-
Set build-backend in pyproject.toml.
- 7663. By Jelmer Vernooij
-
Set setup_requires.
- 7664. By Jelmer Vernooij
-
rely on setuptools-gettext for building mo files
- 7665. By Jelmer Vernooij
-
Install setuptools-gettext in github action.
- 7666. By Jelmer Vernooij
-
Depend on setuptools 0.60, which provides setuptools.
command. build. - 7667. By Jelmer Vernooij
-
Depend on wheel in pyproject.
- 7668. By Jelmer Vernooij
-
Drop Python < 3.7
- 7669. By Jelmer Vernooij
-
Use standard infrastructure for marking C extensions as optional
- 7670. By Jelmer Vernooij
-
Add tarmac configuration.
- 7671. By Jelmer Vernooij
-
Support editable wheels.
- 7672. By Jelmer Vernooij
-
tarmac: Enable --system-
site-packages, pass in correct PYTHON. - 7673. By Jelmer Vernooij
-
Import additional tarmac config.
- 7674. By Jelmer Vernooij
-
tarmac: Run with venv python.
- 7675. By Jelmer Vernooij
-
tarmac: Set setup_command.
- 7676. By Jelmer Vernooij
-
Drop use of pyinotify.
- 7677. By Jelmer Vernooij
-
Clear BRZ_SSH in tests. by jelmer review by jelmer
- 7678. By Jelmer Vernooij
-
Fix Tree.get_file_mtime in shallow trees. by jelmer review by jelmer
- 7679. By Jelmer Vernooij
-
Fix merge command for GitLab MRs by jelmer review by jelmer
- 7680. By Jelmer Vernooij
-
Support titles for merge proposals. by jelmer review by jelmer
- 7681. By Jelmer Vernooij
-
Add support for getting GitHub PRs by URL. by jelmer review by jelmer
- 7682. By Jelmer Vernooij
-
Build wheels with cibuildwheel. by jelmer review by jelmer
- 7683. By Jelmer Vernooij
-
Fix some typing issues. by jelmer review by jelmer
- 7684. By Jelmer Vernooij
-
Explicitly split out UnsupportedVcs error by jelmer review by jelmer
- 7685. By Jelmer Vernooij
-
Drop byov configuration by jelmer review by jelmer
- 7686. By Jelmer Vernooij
-
Drop use of absolute_import. by jelmer review by jelmer
- 7687. By Jelmer Vernooij
-
Drop use of iso8601, add extras for github/gitlab by jelmer review by jelmer
- 7688. By Jelmer Vernooij
-
Fix dulwich compatibility. by jelmer review by jelmer
- 7689. By Jelmer Vernooij
-
Raise specific exception when having to access remote git revision trees. by jelmer review by jelmer
- 7690. By Jelmer Vernooij
-
Add Tree.is_
special_ filename. by jelmer review by jelmer - 7691. By Jelmer Vernooij
-
Use raise from by jelmer review by jelmer
- 7692. By Jelmer Vernooij
-
Add basic typing, make mypy pass by jelmer review by jelmer
- 7693. By Jelmer Vernooij
-
tarmac.conf: Set milestone, add whitespace to commit_
message_ template. by jelmer review by jelmer - 7694. By Jelmer Vernooij
-
Fix extension building on pypy.
by jelmer review by jelmer
- 7695. By Jelmer Vernooij
-
Run mypy and flake8 in tarmac.
by jelmer review by jelmer
- 7696. By Jelmer Vernooij
-
tarmac: install flake8
- 7697. By Jelmer Vernooij
-
flake8: Ignore .eggs.
- 7698. By Jelmer Vernooij
-
Run flake8 on just breezy/
- 7699. By Jelmer Vernooij
-
Migrate from pkg_resources to importlib.metadata.
by jelmer review by jelmer
- 7700. By Jelmer Vernooij
-
Fix missing types for mypy.
by jelmer review by jelmer
- 7701. By Jelmer Vernooij
-
Add cargo metadata
by jelmer review by jelmer
- 7702. By Jelmer Vernooij
-
git: Properly decode tags when selecting.
by jelmer review by jelmer
- 7703. By Jelmer Vernooij
-
Run GitHub actions on Mac OS
by jelmer review by jelmer
- 7704. By Jelmer Vernooij
-
Try harder to find the quilt binary
by jelmer review by jelmer
- 7705. By Jelmer Vernooij
-
Use more google docstrings.
by jelmer review by jelmer
- 7706. By Jelmer Vernooij
-
Fix entry points compatibility with python < 3.10
by jelmer review by jelmer
- 7707. By Jelmer Vernooij
-
Fix time parsing for gitlab & github
by jelmer review by jelmer
- 7708. By Jelmer Vernooij
-
Avoid passing group= option to entry_points()
by jelmer review by jelmer
- 7709. By Jelmer Vernooij
-
Remove unused launchpad code.
by jelmer review by jelmer
- 7710. By Jelmer Vernooij
-
Add a web-open command.
by jelmer review by jelmer
- 7711. By Jelmer Vernooij
-
Use Launchpad API rather than XML/RPC.
by jelmer review by jelmer
- 7712. By Jelmer Vernooij
-
Add Forge.probe_
from_hostname. by jelmer review by jelmer
- 7713. By Jelmer Vernooij
-
Fix get_forge_
by_hostname. by jelmer review by jelmer
- 7714. By Jelmer Vernooij
-
Several inotify improvements
by jelmer review by jelmer
- 7715. By Jelmer Vernooij
-
dirty_tracker: Handle EMFILE
by jelmer review by jelmer
- 7716. By Jelmer Vernooij
-
Add a create_project function for use in silver_platter.
by jelmer review by jelmer
- 7717. By Ondřej Pohořelský
-
Remove pkg-version dependency
by jelmer review by jelmer
- 7718. By Jelmer Vernooij
-
Add --open argument to 'brz propose'.
by jelmer review by jelmer
- 7719. By Jelmer Vernooij
-
Disable ARM builds for wheels.
by jelmer review by jelmer
- 7720. By Jelmer Vernooij
-
Drop obsolete backwards compat code.
by jelmer review by jelmer
- 7721. By Jelmer Vernooij
-
Prevent ARM wheels from building on Mac OS as well.
by jelmer review by jelmer
- 7722. By Jelmer Vernooij
-
Install all rustup targets, fixing wheels.
by jelmer review by jelmer
- 7723. By Jelmer Vernooij
-
Disable ARM wheel builds on Linux for now, since they're failing
by jelmer review by jelmer
- 7724. By Jelmer Vernooij
-
Various improvements for tests on Mac OS X.
by jelmer review by jelmer
- 7725. By Jelmer Vernooij
-
github-action: Build on python 3.11.
by jelmer review by jelmer
- 7726. By Jelmer Vernooij
-
Remove use of PyUnicode_
FromUnicode, gone in Python 3.11. by jelmer review by jelmer
- 7727. By Jelmer Vernooij
-
Raise MissingNestedTree from get_nested_tree().
by jelmer review by jelmer
- 7728. By Jelmer Vernooij
-
Handle http unexpected errors from git
by jelmer review by jelmer
- 7729. By Jelmer Vernooij
-
Ship py.typed
by jelmer review by jelmer
- 7730. By Jelmer Vernooij
-
Fix 3.11 compatibility
by jelmer review by jelmer
- 7731. By Jelmer Vernooij
-
Kill ensure_null.
by jelmer review by jelmer
- 7732. By Jelmer Vernooij
-
Improve extras, add xfail lists for windows/mac.
by jelmer review by jelmer
- 7733. By Jelmer Vernooij
-
Fix merge proposal open after create.
by jelmer review by jelmer
- 7734. By Jelmer Vernooij
-
Bump timeout for no output to 30 minutes.
- 7735. By Jelmer Vernooij
-
selftest: Raise exception when hitting timeout rather than killing the process
by jelmer review by jelmer
- 7736. By Jelmer Vernooij
-
Skip tests that often hang.
by jelmer review by jelmer
- 7737. By Jelmer Vernooij
-
More portability fixes for Windows, Mac OS X.
by jelmer review by jelmer
- 7738. By Jelmer Vernooij
-
Drop references to brz-gtk.
by jelmer review by jelmer
- 7739. By Jelmer Vernooij
-
Improve brz-email docs.
by jelmer review by jelmer
- 7740. By Jelmer Vernooij
-
Drop reference to Bazaar in 'brz plugins'.
by jelmer review by jelmer
- 7741. By Jelmer Vernooij
-
Increase timeout for single test.
by jelmer review by jelmer
- 7742. By Jelmer Vernooij
-
Update release notes for 3.3.1.
by jelmer review by jelmer
- 7743. By Jelmer Vernooij
-
Support [] in email addresses.
by jelmer review by jelmer
- 7744. By Jelmer Vernooij
-
Release 3.3.1
by jelmer review by jelmer
- 7745. By Jelmer Vernooij
-
Fix wheel uploading.
by jelmer review by jelmer
- 7746. By Jelmer Vernooij
-
Bump version, update release instruction for pip.
by jelmer review by jelmer
- 7747. By Jelmer Vernooij
-
Add more typing
by jelmer review by jelmer
- 7748. By Jelmer Vernooij
-
propose: Move web open message.
by jelmer review by jelmer
- 7749. By Jelmer Vernooij
-
Import convenience functions for opening files from brz-debian.
by jelmer review by jelmer
- 7750. By Jelmer Vernooij
-
Update apt before installing.
by jelmer review by jelmer
- 7751. By Jelmer Vernooij
-
Add auto= argument to merge
by jelmer review by jelmer
- 7752. By Jelmer Vernooij
-
gitlab: Don't set titles implicitly.
by jelmer review by jelmer
- 7753. By Jelmer Vernooij
-
Add supports_auto_merge setting.
by jelmer review by jelmer
- 7754. By Jelmer Vernooij
-
Handle GitLab consistently returning 500 when updating description in some versions
by jelmer review by jelmer
- 7755. By Jelmer Vernooij
-
Bundle the webdav plugin
- 7756. By Jelmer Vernooij
-
Fix style.
- 7757. By Jelmer Vernooij
-
Fix tests.
Preview Diff
1 | === added directory 'breezy/plugins/webdav' |
2 | === added file 'breezy/plugins/webdav/NOTES' |
3 | --- breezy/plugins/webdav/NOTES 1970-01-01 00:00:00 +0000 |
4 | +++ breezy/plugins/webdav/NOTES 2022-12-13 16:21:38 +0000 |
5 | @@ -0,0 +1,43 @@ |
6 | +Performances: |
7 | + |
8 | +- Without any optimizations: |
9 | + |
10 | +time bzr push http+webdav://<user>:<pass>@<host>/pub/bzr.dev |
11 | + |
12 | +1948 revision(s) pushed. |
13 | + |
14 | +real 9m54.487s |
15 | +user 1m15.280s |
16 | +sys 0m20.060s |
17 | + |
18 | +The above measure is imprecise and certainly out-of-date. |
19 | + |
20 | +Tests: |
21 | + |
22 | +Installation example: |
23 | + |
24 | +<IfModule mod_dav.c> |
25 | +Alias /bzr /srv/DAV |
26 | +<Directory /srv/DAV> |
27 | + DAV On |
28 | + # DirectorySlash tells apache to reply with redirections if |
29 | + # directories miss their final '/'. It does not play well with |
30 | + # bzr (to they the least) and provide no benefits in our |
31 | + # case. So just turn it off. |
32 | + DirectorySlash Off |
33 | + # We need to activate the following which is off by |
34 | + # default. For good security reasons which don't apply to |
35 | + # bzr directories ;) |
36 | + DavDepthInfinity on |
37 | + # The simplest auth scheme is basic, just given as an |
38 | + # example, using https is recommanded with it, or at |
39 | + # least digest if https is not possible. |
40 | + AuthType Basic |
41 | + AuthName bzr |
42 | + AuthUserFile /etc/apache2/dav.users |
43 | + <LimitExcept GET OPTIONS> |
44 | + # Write access requires authentication |
45 | + Require valid-user |
46 | + </LimitExcept> |
47 | +</Directory> |
48 | +</IfModule> |
49 | |
50 | === added file 'breezy/plugins/webdav/TODO' |
51 | --- breezy/plugins/webdav/TODO 1970-01-01 00:00:00 +0000 |
52 | +++ breezy/plugins/webdav/TODO 2022-12-13 16:21:38 +0000 |
53 | @@ -0,0 +1,48 @@ |
54 | +* webdav.py |
55 | + |
56 | +** We can detect that the server do not accept "write" operations |
57 | + (it will return 501) and raise InvalidHttpRequest(to be |
58 | + defined as a daughter of InvalidHttpResponse) but what will |
59 | + the upper layers do ? |
60 | + |
61 | +** 20060908 All *_file functions are defined in terms of *_bytes |
62 | + because we have to read the file to create a proper PUT |
63 | + request. Is it possible to define PUT with a file-like |
64 | + object, so that we don't have to potentially read in and hold |
65 | + onto potentially 600MB of file contents? |
66 | + |
67 | +** Factor out the error handling. Try to use |
68 | + Transport.translate_error if it becomes an accessible |
69 | + function. Otherwise duplicate it here (bad) |
70 | + |
71 | +* tests |
72 | + |
73 | +** Implement the testing of the range header for PUT requests |
74 | + (GET request are already heavily tested in bzr). Test servers |
75 | + are available there too. This will also help for reporting |
76 | + bugs against lighttp. |
77 | + |
78 | +** Turning directory indexes off may make the server reports that |
79 | + an existing directory does not exist. Reportedly, using |
80 | + multiviews can provoke that too. Investigate and fix. |
81 | + |
82 | +** A DAV web server can't handle mode on files because: |
83 | + |
84 | + - there is nothing in the protocol for that (bar some of them |
85 | + via PROPPATCH, but only for apache2 anyway), |
86 | + |
87 | + - the server itself generally uses the mode for its own |
88 | + purposes, except if you make it run under suid which is really, |
89 | + really dangerous (Apache should be compiled with |
90 | + -DBIG_SECURITY_HOLE for those who didn't get the message). |
91 | + |
92 | + That means this transport will do no better. May be the file |
93 | + mode should be a file property handled explicitely inside the |
94 | + repositories and applied by bzr in the working trees. That |
95 | + implies a mean to store file properties, apply them, detecting |
96 | + their changes, etc. |
97 | + |
98 | + It may be possible to use PROPPATCH to handle mode bits, but |
99 | + bzr doesn't try to handle remote working trees. So until the |
100 | + neeed arises, this will remain as is. |
101 | + |
102 | |
103 | === added file 'breezy/plugins/webdav/__init__.py' |
104 | --- breezy/plugins/webdav/__init__.py 1970-01-01 00:00:00 +0000 |
105 | +++ breezy/plugins/webdav/__init__.py 2022-12-13 16:21:38 +0000 |
106 | @@ -0,0 +1,45 @@ |
107 | +# Copyright (C) 2006-2009, 2011, 2012 Canonical Ltd |
108 | +# |
109 | +# This program is free software; you can redistribute it and/or modify |
110 | +# it under the terms of the GNU General Public License as published by |
111 | +# the Free Software Foundation; either version 2 of the License, or |
112 | +# (at your option) any later version. |
113 | +# |
114 | +# This program is distributed in the hope that it will be useful, |
115 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of |
116 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
117 | +# GNU General Public License for more details. |
118 | +# |
119 | +# You should have received a copy of the GNU General Public License |
120 | +# along with this program; if not, write to the Free Software |
121 | +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
122 | + |
123 | +"""An http transport, using webdav to allow pushing. |
124 | + |
125 | +This defines the HttpWebDAV transport, which implement the necessary |
126 | +handling of WebDAV to allow pushing on an http server. |
127 | +""" |
128 | + |
129 | +import breezy |
130 | + |
131 | +from ... import version_info # noqa: F401 |
132 | + |
133 | +from breezy import transport |
134 | + |
135 | +transport.register_urlparse_netloc_protocol('http+webdav') |
136 | +transport.register_urlparse_netloc_protocol('https+webdav') |
137 | + |
138 | +transport.register_lazy_transport( |
139 | + 'https+webdav://', __name__ + '.webdav', 'HttpDavTransport') |
140 | +transport.register_lazy_transport( |
141 | + 'http+webdav://', __name__ + '.webdav', 'HttpDavTransport') |
142 | + |
143 | + |
144 | +def load_tests(loader, basic_tests, pattern): |
145 | + testmod_names = [ |
146 | + 'tests', |
147 | + ] |
148 | + basic_tests.addTest(loader.loadTestsFromModuleNames( |
149 | + ["%s.%s" % (__name__, tmn) for tmn in testmod_names])) |
150 | + return basic_tests |
151 | + |
152 | |
153 | === added directory 'breezy/plugins/webdav/tests' |
154 | === added file 'breezy/plugins/webdav/tests/__init__.py' |
155 | --- breezy/plugins/webdav/tests/__init__.py 1970-01-01 00:00:00 +0000 |
156 | +++ breezy/plugins/webdav/tests/__init__.py 2022-12-13 16:21:38 +0000 |
157 | @@ -0,0 +1,23 @@ |
158 | +# Copyright (C) 2008 by Canonical Ltd |
159 | +# |
160 | +# This program is free software; you can redistribute it and/or modify |
161 | +# it under the terms of the GNU General Public License as published by |
162 | +# the Free Software Foundation; either version 2 of the License, or |
163 | +# (at your option) any later version. |
164 | +# |
165 | +# This program is distributed in the hope that it will be useful, |
166 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of |
167 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
168 | +# GNU General Public License for more details. |
169 | +# |
170 | +# You should have received a copy of the GNU General Public License |
171 | +# along with this program; if not, write to the Free Software |
172 | +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
173 | + |
174 | +def load_tests(loader, basic_tests, pattern): |
175 | + testmod_names = [ |
176 | + 'test_webdav', |
177 | + ] |
178 | + basic_tests.addTest(loader.loadTestsFromModuleNames( |
179 | + ["%s.%s" % (__name__, tmn) for tmn in testmod_names])) |
180 | + return basic_tests |
181 | |
182 | === added file 'breezy/plugins/webdav/tests/dav_server.py' |
183 | --- breezy/plugins/webdav/tests/dav_server.py 1970-01-01 00:00:00 +0000 |
184 | +++ breezy/plugins/webdav/tests/dav_server.py 2022-12-13 16:21:38 +0000 |
185 | @@ -0,0 +1,468 @@ |
186 | +# Copyright (C) 2008, 2009, 2011, 2013 Canonical Ltd |
187 | +# |
188 | +# This program is free software; you can redistribute it and/or modify |
189 | +# it under the terms of the GNU General Public License as published by |
190 | +# the Free Software Foundation; either version 2 of the License, or |
191 | +# (at your option) any later version. |
192 | +# |
193 | +# This program is distributed in the hope that it will be useful, |
194 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of |
195 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
196 | +# GNU General Public License for more details. |
197 | +# |
198 | +# You should have received a copy of the GNU General Public License |
199 | +# along with this program; if not, write to the Free Software |
200 | +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
201 | + |
202 | +"""DAV test server. |
203 | + |
204 | +This defines the TestingDAVRequestHandler and the DAVServer classes which |
205 | +implements the DAV specification parts used by the webdav plugin. |
206 | +""" |
207 | + |
208 | + |
209 | +import errno |
210 | +import os |
211 | +import re |
212 | +import shutil # FIXME: Can't we use breezy.osutils ? |
213 | +import stat |
214 | +import time |
215 | +import urllib.parse # FIXME: Can't we use breezy.urlutils ? |
216 | + |
217 | + |
218 | +from breezy import ( |
219 | + trace, |
220 | + urlutils, |
221 | + ) |
222 | +from breezy.tests import http_server |
223 | + |
224 | + |
225 | +class TestingDAVRequestHandler(http_server.TestingHTTPRequestHandler): |
226 | + """ |
227 | + Subclass of TestingHTTPRequestHandler handling DAV requests. |
228 | + |
229 | + This is not a full implementation of a DAV server, only the parts |
230 | + really used by the plugin are. |
231 | + """ |
232 | + |
233 | + _RANGE_HEADER_RE = re.compile( |
234 | + r'bytes (?P<begin>\d+)-(?P<end>\d+)/(?P<size>\d+|\*)') |
235 | + |
236 | + delete_success_code = 204 |
237 | + move_default_overwrite = True |
238 | + |
239 | + |
240 | + def date_time_string(self, timestamp=None): |
241 | + """Return the current date and time formatted for a message header.""" |
242 | + if timestamp is None: |
243 | + timestamp = time.time() |
244 | + year, month, day, hh, mm, ss, wd, y, z = time.gmtime(timestamp) |
245 | + s = "%s, %02d %3s %4d %02d:%02d:%02d GMT" % ( |
246 | + self.weekdayname[wd], |
247 | + day, self.monthname[month], year, |
248 | + hh, mm, ss) |
249 | + return s |
250 | + |
251 | + def _read(self, length): |
252 | + """Read the client socket""" |
253 | + return self.rfile.read(length) |
254 | + |
255 | + def _readline(self): |
256 | + """Read a full line on the client socket""" |
257 | + return self.rfile.readline() |
258 | + |
259 | + def read_body(self): |
260 | + """Read the body either by chunk or as a whole.""" |
261 | + content_length = self.headers.get('Content-Length') |
262 | + encoding = self.headers.get('Transfer-Encoding') |
263 | + if encoding is not None: |
264 | + assert encoding == 'chunked' |
265 | + body = [] |
266 | + # We receive the content by chunk |
267 | + while True: |
268 | + length, data = self.read_chunk() |
269 | + if length == 0: |
270 | + break |
271 | + body.append(data) |
272 | + body = ''.join(body) |
273 | + |
274 | + else: |
275 | + if content_length is not None: |
276 | + body = self._read(int(content_length)) |
277 | + |
278 | + return body |
279 | + |
280 | + def read_chunk(self): |
281 | + """Read a chunk of data. |
282 | + |
283 | + A chunk consists of: |
284 | + - a line containing the length of the data in hexa, |
285 | + - the data. |
286 | + - a empty line. |
287 | + |
288 | + An empty chunk specifies a length of zero |
289 | + """ |
290 | + length = int(self._readline(), 16) |
291 | + data = None |
292 | + if length != 0: |
293 | + data = self._read(length) |
294 | + # Eats the newline following the chunk |
295 | + self._readline() |
296 | + return length, data |
297 | + |
298 | + def send_head(self): |
299 | + """Specialized version of SimpleHttpServer. |
300 | + |
301 | + We *don't* want the apache behavior of permanently redirecting |
302 | + directories without trailing slashes to directories with trailing |
303 | + slashes. That's a waste and a severe penalty for clients with high |
304 | + latency. |
305 | + |
306 | + The installation documentation of the plugin should mention the |
307 | + DirectorySlash apache directive and insists on turning it *Off*. |
308 | + """ |
309 | + path = self.translate_path(self.path) |
310 | + f = None |
311 | + if os.path.isdir(path): |
312 | + for index in "index.html", "index.htm": |
313 | + index = os.path.join(path, index) |
314 | + if os.path.exists(index): |
315 | + path = index |
316 | + break |
317 | + else: |
318 | + return self.list_directory(path) |
319 | + ctype = self.guess_type(path) |
320 | + if ctype.startswith('text/'): |
321 | + mode = 'r' |
322 | + else: |
323 | + mode = 'rb' |
324 | + try: |
325 | + f = open(path, mode) |
326 | + except IOError: |
327 | + self.send_error(404, "File not found") |
328 | + return None |
329 | + self.send_response(200) |
330 | + self.send_header("Content-type", ctype) |
331 | + fs = os.fstat(f.fileno()) |
332 | + self.send_header("Content-Length", str(fs[6])) |
333 | + self.send_header("Last-Modified", self.date_time_string(fs.st_mtime)) |
334 | + self.end_headers() |
335 | + return f |
336 | + |
337 | + def do_PUT(self): |
338 | + """Serve a PUT request.""" |
339 | + # FIXME: test_put_file_unicode makes us emit a traceback because a |
340 | + # UnicodeEncodeError occurs after the request headers have been sent |
341 | + # but before the body can be send. It's harmless and does not make the |
342 | + # test fails. Adressing that will mean protecting all reads from the |
343 | + # socket, which is too heavy for now -- vila 20070917 |
344 | + path = self.translate_path(self.path) |
345 | + trace.mutter("do_PUT rel: [%s], abs: [%s]" % (self.path, path)) |
346 | + |
347 | + do_append = False |
348 | + # Check the Content-Range header |
349 | + range_header = self.headers.get('Content-Range') |
350 | + if range_header is not None: |
351 | + match = self._RANGE_HEADER_RE.match(range_header) |
352 | + if match is None: |
353 | + # FIXME: RFC2616 says to return a 501 if we don't |
354 | + # understand the Content-Range header, but Apache |
355 | + # just ignores them (bad Apache). |
356 | + self.send_error(501, 'Not Implemented') |
357 | + return |
358 | + begin = int(match.group('begin')) |
359 | + do_append = True |
360 | + |
361 | + if self.headers.get('Expect') == '100-continue': |
362 | + # Tell the client to go ahead, we're ready to get the content |
363 | + self.send_response(100, "Continue") |
364 | + self.end_headers() |
365 | + |
366 | + try: |
367 | + trace.mutter("do_PUT will try to open: [%s]" % path) |
368 | + # Always write in binary mode. |
369 | + if do_append: |
370 | + f = open(path, 'ab') |
371 | + f.seek(begin) |
372 | + else: |
373 | + f = open(path, 'wb') |
374 | + except (IOError, OSError) as e: |
375 | + trace.mutter("do_PUT got: [%r] while opening/seeking on [%s]" |
376 | + % (e, self.path)) |
377 | + self.send_error(409, 'Conflict') |
378 | + return |
379 | + |
380 | + try: |
381 | + data = self.read_body() |
382 | + f.write(data) |
383 | + except (IOError, OSError): |
384 | + # FIXME: We leave a partially written file here |
385 | + self.send_error(409, "Conflict") |
386 | + f.close() |
387 | + return |
388 | + f.close() |
389 | + trace.mutter("do_PUT done: [%s]" % self.path) |
390 | + self.send_response(201) |
391 | + self.end_headers() |
392 | + |
393 | + def do_MKCOL(self): |
394 | + """ |
395 | + Serve a MKCOL request. |
396 | + |
397 | + MKCOL is an mkdir in DAV terminology for our part. |
398 | + """ |
399 | + path = self.translate_path(self.path) |
400 | + trace.mutter("do_MKCOL rel: [%s], abs: [%s]" % (self.path, path)) |
401 | + try: |
402 | + os.mkdir(path) |
403 | + except (IOError, OSError) as e: |
404 | + if e.errno in (errno.ENOENT, ): |
405 | + self.send_error(409, "Conflict") |
406 | + elif e.errno in (errno.EEXIST, errno.ENOTDIR): |
407 | + self.send_error(405, "Not allowed") |
408 | + else: |
409 | + # Ok we fail for an unnkown reason :-/ |
410 | + raise |
411 | + else: |
412 | + self.send_response(201) |
413 | + self.end_headers() |
414 | + |
415 | + def do_COPY(self): |
416 | + """Serve a COPY request.""" |
417 | + |
418 | + url_to = self.headers.get('Destination') |
419 | + if url_to is None: |
420 | + self.send_error(400, "Destination header missing") |
421 | + return |
422 | + (scheme, netloc, rel_to, |
423 | + params, query, fragment) = urllib.parse.urlparse(url_to) |
424 | + trace.mutter("urlparse: (%s) [%s]" % (url_to, rel_to)) |
425 | + trace.mutter("do_COPY rel_from: [%s], rel_to: [%s]" % (self.path, |
426 | + rel_to)) |
427 | + abs_from = self.translate_path(self.path) |
428 | + abs_to = self.translate_path(rel_to) |
429 | + try: |
430 | + # TODO: Check that rel_from exists and rel_to does |
431 | + # not. In the mean time, just go along and trap |
432 | + # exceptions |
433 | + shutil.copyfile(abs_from, abs_to) |
434 | + except (IOError, OSError) as e: |
435 | + if e.errno == errno.ENOENT: |
436 | + self.send_error(404, "File not found") |
437 | + else: |
438 | + self.send_error(409, "Conflict") |
439 | + else: |
440 | + # TODO: We may be able to return 204 "No content" if |
441 | + # rel_to was existing (even if the "No content" part |
442 | + # seems misleading, RFC2518 says so, stop arguing :) |
443 | + self.send_response(201) |
444 | + self.end_headers() |
445 | + |
446 | + def do_DELETE(self): |
447 | + """Serve a DELETE request. |
448 | + |
449 | + We don't implement a true DELETE as DAV defines it |
450 | + because we *should* fail to delete a non empty dir. |
451 | + """ |
452 | + path = self.translate_path(self.path) |
453 | + trace.mutter("do_DELETE rel: [%s], abs: [%s]" % (self.path, path)) |
454 | + try: |
455 | + # DAV makes no distinction between files and dirs |
456 | + # when required to nuke them, but we have to. And we |
457 | + # also watch out for symlinks. |
458 | + real_path = os.path.realpath(path) |
459 | + if os.path.isdir(real_path): |
460 | + os.rmdir(path) |
461 | + else: |
462 | + os.remove(path) |
463 | + except (IOError, OSError) as e: |
464 | + if e.errno in (errno.ENOENT, ): |
465 | + self.send_error(404, "File not found") |
466 | + else: |
467 | + # Ok we fail for an unnkown reason :-/ |
468 | + raise |
469 | + else: |
470 | + self.send_response(self.delete_success_code) |
471 | + self.end_headers() |
472 | + |
473 | + def do_MOVE(self): |
474 | + """Serve a MOVE request.""" |
475 | + |
476 | + url_to = self.headers.get('Destination') |
477 | + if url_to is None: |
478 | + self.send_error(400, "Destination header missing") |
479 | + return |
480 | + overwrite_header = self.headers.get('Overwrite') |
481 | + should_overwrite = self.move_default_overwrite |
482 | + if overwrite_header == 'F': |
483 | + should_overwrite = False |
484 | + elif overwrite_header == 'T': |
485 | + should_overwrite = True |
486 | + (scheme, netloc, rel_to, |
487 | + params, query, fragment) = urllib.parse.urlparse(url_to) |
488 | + trace.mutter("urlparse: (%s) [%s]" % (url_to, rel_to)) |
489 | + trace.mutter("do_MOVE rel_from: [%s], rel_to: [%s]" % (self.path, |
490 | + rel_to)) |
491 | + abs_from = self.translate_path(self.path) |
492 | + abs_to = self.translate_path(rel_to) |
493 | + if not should_overwrite and os.access(abs_to, os.F_OK): |
494 | + self.send_error(412, "Precondition Failed") |
495 | + return |
496 | + try: |
497 | + os.rename(abs_from, abs_to) |
498 | + except (IOError, OSError) as e: |
499 | + if e.errno == errno.ENOENT: |
500 | + self.send_error(404, "File not found") |
501 | + else: |
502 | + self.send_error(409, "Conflict") |
503 | + else: |
504 | + # TODO: We may be able to return 204 "No content" if |
505 | + # rel_to was existing (even if the "No content" part |
506 | + # seems misleading, RFC2518 says so, stop arguing :) |
507 | + self.send_response(201) |
508 | + self.end_headers() |
509 | + |
510 | + def _generate_response(self, path): |
511 | + local_path = self.translate_path(path) |
512 | + st = os.stat(local_path) |
513 | + prop = dict() |
514 | + |
515 | + def _prop(ns, name, value=None): |
516 | + if value is None: |
517 | + return '<%s:%s/>' % (ns, name) |
518 | + else: |
519 | + return '<%s:%s>%s</%s:%s>' % (ns, name, value, ns, name) |
520 | + |
521 | + # For namespaces (and test purposes), where apache2 use: |
522 | + # - lp1, we use liveprop, |
523 | + # - lp2, we use bzr |
524 | + if stat.S_ISDIR(st.st_mode): |
525 | + dpath = path |
526 | + if not dpath.endswith('/'): |
527 | + dpath += '/' |
528 | + prop['href'] = _prop('D', 'href', dpath) |
529 | + prop['type'] = _prop('liveprop', 'resourcetype', '<D:collection/>') |
530 | + prop['length'] = '' |
531 | + prop['exec'] = '' |
532 | + else: |
533 | + # FIXME: assert S_ISREG ? Handle symlinks ? |
534 | + prop['href'] = _prop('D', 'href', path) |
535 | + prop['type'] = _prop('liveprop', 'resourcetype') |
536 | + prop['length'] = _prop('liveprop', 'getcontentlength', |
537 | + st.st_size) |
538 | + if st.st_mode & stat.S_IXUSR: |
539 | + is_exec = 'T' |
540 | + else: |
541 | + is_exec = 'F' |
542 | + prop['exec'] = _prop('bzr', 'executable', is_exec) |
543 | + prop['status'] = _prop('D', 'status', 'HTTP/1.1 200 OK') |
544 | + |
545 | + response = """<D:response xmlns:liveprop="DAV:" xmlns:bzr="DAV:"> |
546 | + %(href)s |
547 | + <D:propstat> |
548 | + <D:prop> |
549 | + %(type)s |
550 | + %(length)s |
551 | + %(exec)s |
552 | + </D:prop> |
553 | + %(status)s |
554 | + </D:propstat> |
555 | +</D:response> |
556 | +""" % prop |
557 | + return response, st |
558 | + |
559 | + def _generate_dir_responses(self, path, depth): |
560 | + local_path = self.translate_path(path) |
561 | + entries = os.listdir(local_path) |
562 | + |
563 | + for entry in entries: |
564 | + entry_path = urlutils.escape(entry) |
565 | + if path.endswith('/'): |
566 | + entry_path = path + entry_path |
567 | + else: |
568 | + entry_path = path + '/' + entry_path |
569 | + response, st = self._generate_response(entry_path) |
570 | + yield response |
571 | + if depth == 'Infinity' and stat.S_ISDIR(st.st_mode): |
572 | + yield from self._generate_dir_responses(entry_path, depth) |
573 | + |
574 | + def do_PROPFIND(self): |
575 | + """Serve a PROPFIND request.""" |
576 | + depth = self.headers.get('Depth') |
577 | + if depth is None: |
578 | + depth = 'Infinity' |
579 | + if depth not in ('0', '1', 'Infinity'): |
580 | + self.send_error(400, "Bad Depth") |
581 | + return |
582 | + |
583 | + # Don't bother parsing the body, we handle only allprop anyway. |
584 | + # FIXME: Handle the body :) |
585 | + self.read_body() |
586 | + |
587 | + try: |
588 | + response, st = self._generate_response(self.path) |
589 | + except OSError as e: |
590 | + if e.errno == errno.ENOENT: |
591 | + self.send_error(404) |
592 | + return |
593 | + else: |
594 | + raise |
595 | + |
596 | + if depth in ('1', 'Infinity') and stat.S_ISDIR(st.st_mode): |
597 | + dir_responses = self._generate_dir_responses(self.path, depth) |
598 | + else: |
599 | + dir_responses = [] |
600 | + |
601 | + # Generate the response, we don't care about performance, so we just |
602 | + # expand everything into a big string. |
603 | + response = ("""<?xml version="1.0" encoding="utf-8"?> |
604 | +<D:multistatus xmlns:D="DAV:" xmlns:ns0="DAV:"> |
605 | +%s%s |
606 | +</D:multistatus>""" % (response, ''.join(dir_responses))).encode('utf-8') |
607 | + |
608 | + self.send_response(207) |
609 | + self.send_header('Content-length', len(response)) |
610 | + self.end_headers() |
611 | + self.wfile.write(response) |
612 | + |
613 | + |
614 | +class DAVServer(http_server.HttpServer): |
615 | + """Subclass of HttpServer that gives http+webdav urls. |
616 | + |
617 | + This is for use in testing: connections to this server will always go |
618 | + through _urllib where possible. |
619 | + """ |
620 | + |
621 | + def __init__(self): |
622 | + # We have special requests to handle that |
623 | + # HttpServer_urllib doesn't know about |
624 | + super(DAVServer, self).__init__(TestingDAVRequestHandler) |
625 | + |
626 | + # urls returned by this server should require the webdav client impl |
627 | + _url_protocol = 'http+webdav' |
628 | + |
629 | + |
630 | +class QuirkyTestingDAVRequestHandler(TestingDAVRequestHandler): |
631 | + """Various quirky/slightly off-spec behaviors. |
632 | + |
633 | + Used to test how gracefully we handle them. |
634 | + """ |
635 | + |
636 | + delete_success_code = 200 |
637 | + move_default_overwrite = False |
638 | + |
639 | + |
640 | +class QuirkyDAVServer(http_server.HttpServer): |
641 | + """DAVServer implementing various quirky/slightly off-spec behaviors. |
642 | + |
643 | + Used to test how gracefully we handle them. |
644 | + """ |
645 | + |
646 | + def __init__(self): |
647 | + # We have special requests to handle that |
648 | + # HttpServer_urllib doesn't know about |
649 | + super(QuirkyDAVServer, self).__init__(QuirkyTestingDAVRequestHandler) |
650 | + |
651 | + # urls returned by this server should require the webdav client impl |
652 | + _url_protocol = 'http+webdav' |
653 | + |
654 | |
655 | === added file 'breezy/plugins/webdav/tests/test_webdav.py' |
656 | --- breezy/plugins/webdav/tests/test_webdav.py 1970-01-01 00:00:00 +0000 |
657 | +++ breezy/plugins/webdav/tests/test_webdav.py 2022-12-13 16:21:38 +0000 |
658 | @@ -0,0 +1,421 @@ |
659 | +# Copyright (C) 2006, 2007, 2008, 2013 Canonical Ltd |
660 | +# |
661 | +# This program is free software; you can redistribute it and/or modify |
662 | +# it under the terms of the GNU General Public License as published by |
663 | +# the Free Software Foundation; either version 2 of the License, or |
664 | +# (at your option) any later version. |
665 | +# |
666 | +# This program is distributed in the hope that it will be useful, |
667 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of |
668 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
669 | +# GNU General Public License for more details. |
670 | +# |
671 | +# You should have received a copy of the GNU General Public License |
672 | +# along with this program; if not, write to the Free Software |
673 | +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
674 | + |
675 | +"""Tests for the wedav plugin.""" |
676 | + |
677 | +from http.client import parse_headers |
678 | +from io import StringIO |
679 | +import stat |
680 | + |
681 | + |
682 | +from breezy import ( |
683 | + errors, |
684 | + tests, |
685 | + ) |
686 | +from breezy.plugins.webdav import webdav |
687 | +from breezy.tests import http_server |
688 | + |
689 | + |
690 | +def _get_list_dir_apache2_depth_1_prop(): |
691 | + return """<?xml version="1.0" encoding="utf-8"?> |
692 | +<D:multistatus xmlns:D="DAV:" xmlns:ns0="DAV:"> |
693 | + <D:response> |
694 | + <D:href>/19016477731212686926.835527/</D:href> |
695 | + <D:propstat> |
696 | + <D:prop> |
697 | + </D:prop> |
698 | + <D:status>HTTP/1.1 200 OK</D:status> |
699 | + </D:propstat> |
700 | + </D:response> |
701 | + <D:response> |
702 | + <D:href>/19016477731212686926.835527/a</D:href> |
703 | + <D:propstat> |
704 | + <D:prop> |
705 | + </D:prop> |
706 | + <D:status>HTTP/1.1 200 OK</D:status> |
707 | + </D:propstat> |
708 | + </D:response> |
709 | + <D:response> |
710 | + <D:href>/19016477731212686926.835527/b</D:href> |
711 | + <D:propstat> |
712 | + <D:prop> |
713 | + </D:prop> |
714 | + <D:status>HTTP/1.1 200 OK</D:status> |
715 | + </D:propstat> |
716 | + </D:response> |
717 | + <D:response> |
718 | + <D:href>/19016477731212686926.835527/c/</D:href> |
719 | + <D:propstat> |
720 | + <D:prop> |
721 | + </D:prop> |
722 | + <D:status>HTTP/1.1 200 OK</D:status> |
723 | + </D:propstat> |
724 | + </D:response> |
725 | +</D:multistatus>""" |
726 | + |
727 | + |
728 | +def _get_list_dir_apache2_depth_1_allprop(): |
729 | + return """<?xml version="1.0" encoding="utf-8"?> |
730 | +<D:multistatus xmlns:D="DAV:" xmlns:ns0="DAV:"> |
731 | + <D:response xmlns:lp1="DAV:" xmlns:lp2="http://apache.org/dav/props/"> |
732 | + <D:href>/</D:href> |
733 | + <D:propstat> |
734 | + <D:prop> |
735 | + <lp1:resourcetype><D:collection/></lp1:resourcetype> |
736 | + <lp1:creationdate>2008-06-08T10:50:38Z</lp1:creationdate> |
737 | + <lp1:getlastmodified>Sun, 08 Jun 2008 10:50:38 GMT</lp1:getlastmodified> |
738 | + <lp1:getetag>"da7f5a-cc-7722db80"</lp1:getetag> |
739 | + <D:supportedlock> |
740 | + <D:lockentry> |
741 | + <D:lockscope><D:exclusive/></D:lockscope> |
742 | + <D:locktype><D:write/></D:locktype> |
743 | + </D:lockentry> |
744 | + <D:lockentry> |
745 | + <D:lockscope><D:shared/></D:lockscope> |
746 | + <D:locktype><D:write/></D:locktype> |
747 | + </D:lockentry> |
748 | + </D:supportedlock> |
749 | + <D:lockdiscovery/> |
750 | + </D:prop> |
751 | + <D:status>HTTP/1.1 200 OK</D:status> |
752 | + </D:propstat> |
753 | + </D:response> |
754 | + <D:response xmlns:lp1="DAV:" xmlns:lp2="http://apache.org/dav/props/"> |
755 | + <D:href>/executable</D:href> |
756 | + <D:propstat> |
757 | + <D:prop> |
758 | + <lp1:resourcetype/> |
759 | + <lp1:creationdate>2008-06-08T09:50:15Z</lp1:creationdate> |
760 | + <lp1:getcontentlength>14</lp1:getcontentlength> |
761 | + <lp1:getlastmodified>Sun, 08 Jun 2008 09:50:11 GMT</lp1:getlastmodified> |
762 | + <lp1:getetag>"da9f81-0-9ef33ac0"</lp1:getetag> |
763 | + <lp2:executable>T</lp2:executable> |
764 | + <D:supportedlock> |
765 | + <D:lockentry> |
766 | + <D:lockscope><D:exclusive/></D:lockscope> |
767 | + <D:locktype><D:write/></D:locktype> |
768 | + </D:lockentry> |
769 | + <D:lockentry> |
770 | + <D:lockscope><D:shared/></D:lockscope> |
771 | + <D:locktype><D:write/></D:locktype> |
772 | + </D:lockentry> |
773 | + </D:supportedlock> |
774 | + <D:lockdiscovery/> |
775 | + </D:prop> |
776 | + <D:status>HTTP/1.1 200 OK</D:status> |
777 | + </D:propstat> |
778 | + </D:response> |
779 | + <D:response xmlns:lp1="DAV:" xmlns:lp2="http://apache.org/dav/props/"> |
780 | + <D:href>/read-only</D:href> |
781 | + <D:propstat> |
782 | + <D:prop> |
783 | + <lp1:resourcetype/> |
784 | + <lp1:creationdate>2008-06-08T09:50:11Z</lp1:creationdate> |
785 | + <lp1:getcontentlength>42</lp1:getcontentlength> |
786 | + <lp1:getlastmodified>Sun, 08 Jun 2008 09:50:11 GMT</lp1:getlastmodified> |
787 | + <lp1:getetag>"da9f80-0-9ef33ac0"</lp1:getetag> |
788 | + <lp2:executable>F</lp2:executable> |
789 | + <D:supportedlock> |
790 | + <D:lockentry> |
791 | + <D:lockscope><D:exclusive/></D:lockscope> |
792 | + <D:locktype><D:write/></D:locktype> |
793 | + </D:lockentry> |
794 | + <D:lockentry> |
795 | + <D:lockscope><D:shared/></D:lockscope> |
796 | + <D:locktype><D:write/></D:locktype> |
797 | + </D:lockentry> |
798 | + </D:supportedlock> |
799 | + <D:lockdiscovery/> |
800 | + </D:prop> |
801 | + <D:status>HTTP/1.1 200 OK</D:status> |
802 | + </D:propstat> |
803 | + </D:response> |
804 | + <D:response xmlns:lp1="DAV:" xmlns:lp2="http://apache.org/dav/props/"> |
805 | + <D:href>/titi</D:href> |
806 | + <D:propstat> |
807 | + <D:prop> |
808 | + <lp1:resourcetype/> |
809 | + <lp1:creationdate>2008-06-08T09:49:53Z</lp1:creationdate> |
810 | + <lp1:getcontentlength>6</lp1:getcontentlength> |
811 | + <lp1:getlastmodified>Sun, 08 Jun 2008 09:49:53 GMT</lp1:getlastmodified> |
812 | + <lp1:getetag>"da8cbc-6-9de09240"</lp1:getetag> |
813 | + <lp2:executable>F</lp2:executable> |
814 | + <D:supportedlock> |
815 | + <D:lockentry> |
816 | + <D:lockscope><D:exclusive/></D:lockscope> |
817 | + <D:locktype><D:write/></D:locktype> |
818 | + </D:lockentry> |
819 | + <D:lockentry> |
820 | + <D:lockscope><D:shared/></D:lockscope> |
821 | + <D:locktype><D:write/></D:locktype> |
822 | + </D:lockentry> |
823 | + </D:supportedlock> |
824 | + <D:lockdiscovery/> |
825 | + </D:prop> |
826 | + <D:status>HTTP/1.1 200 OK</D:status> |
827 | + </D:propstat> |
828 | + </D:response> |
829 | + <D:response xmlns:lp1="DAV:" xmlns:lp2="http://apache.org/dav/props/"> |
830 | + <D:href>/toto/</D:href> |
831 | + <D:propstat> |
832 | + <D:prop> |
833 | + <lp1:resourcetype><D:collection/></lp1:resourcetype> |
834 | + <lp1:creationdate>2008-06-06T08:07:07Z</lp1:creationdate> |
835 | + <lp1:getlastmodified>Fri, 06 Jun 2008 08:07:07 GMT</lp1:getlastmodified> |
836 | + <lp1:getetag>"da8cb9-44-f2ac20c0"</lp1:getetag> |
837 | + <D:supportedlock> |
838 | + <D:lockentry> |
839 | + <D:lockscope><D:exclusive/></D:lockscope> |
840 | + <D:locktype><D:write/></D:locktype> |
841 | + </D:lockentry> |
842 | + <D:lockentry> |
843 | + <D:lockscope><D:shared/></D:lockscope> |
844 | + <D:locktype><D:write/></D:locktype> |
845 | + </D:lockentry> |
846 | + </D:supportedlock> |
847 | + <D:lockdiscovery/> |
848 | + </D:prop> |
849 | + <D:status>HTTP/1.1 200 OK</D:status> |
850 | + </D:propstat> |
851 | + </D:response> |
852 | +</D:multistatus> |
853 | +""" |
854 | + |
855 | + |
856 | +class TestDavSaxParser(tests.TestCase): |
857 | + |
858 | + def _extract_dir_content_from_str(self, str): |
859 | + return webdav._extract_dir_content( |
860 | + 'http://localhost/blah', StringIO(str)) |
861 | + |
862 | + def _extract_stat_from_str(self, str): |
863 | + return webdav._extract_stat_info( |
864 | + 'http://localhost/blah', StringIO(str)) |
865 | + |
866 | + def test_unkown_format_response(self): |
867 | + # Valid but unrelated xml |
868 | + example = """<document/>""" |
869 | + self.assertRaises(errors.InvalidHttpResponse, |
870 | + self._extract_dir_content_from_str, example) |
871 | + |
872 | + def test_list_dir_malformed_response(self): |
873 | + # Invalid xml, neither multistatus nor response are properly closed |
874 | + example = """<?xml version="1.0" encoding="utf-8"?> |
875 | +<D:multistatus xmlns:D="DAV:" xmlns:ns0="urn:uuid:c2f41010-65b3-11d1-a29f-00aa00c14882/"> |
876 | +<D:response> |
877 | +<D:href>http://localhost/</D:href>""" |
878 | + self.assertRaises(errors.InvalidHttpResponse, |
879 | + self._extract_dir_content_from_str, example) |
880 | + |
881 | + def test_list_dir_incomplete_format_response(self): |
882 | + # The information we need is not present |
883 | + example = """<?xml version="1.0" encoding="utf-8"?> |
884 | +<D:multistatus xmlns:D="DAV:" xmlns:ns0="urn:uuid:c2f41010-65b3-11d1-a29f-00aa00c14882/"> |
885 | +<D:response> |
886 | +<D:href>http://localhost/</D:href> |
887 | +</D:response> |
888 | +<D:response> |
889 | +<D:href>http://localhost/titi</D:href> |
890 | +</D:response> |
891 | +<D:href>http://localhost/toto</D:href> |
892 | +</D:multistatus>""" |
893 | + self.assertRaises(errors.NotADirectory, |
894 | + self._extract_dir_content_from_str, example) |
895 | + |
896 | + def test_list_dir_apache2_example(self): |
897 | + example = _get_list_dir_apache2_depth_1_prop() |
898 | + self.assertRaises(errors.NotADirectory, |
899 | + self._extract_dir_content_from_str, example) |
900 | + |
901 | + def test_list_dir_lighttpd_example(self): |
902 | + example = """<?xml version="1.0" encoding="utf-8"?> |
903 | +<D:multistatus xmlns:D="DAV:" xmlns:ns0="urn:uuid:c2f41010-65b3-11d1-a29f-00aa00c14882/"> |
904 | +<D:response> |
905 | +<D:href>http://localhost/</D:href> |
906 | +</D:response> |
907 | +<D:response> |
908 | +<D:href>http://localhost/titi</D:href> |
909 | +</D:response> |
910 | +<D:response> |
911 | +<D:href>http://localhost/toto</D:href> |
912 | +</D:response> |
913 | +</D:multistatus>""" |
914 | + self.assertRaises(errors.NotADirectory, |
915 | + self._extract_dir_content_from_str, example) |
916 | + |
917 | + def test_list_dir_apache2_dir_depth_1_example(self): |
918 | + example = _get_list_dir_apache2_depth_1_allprop() |
919 | + self.assertEqual([('executable', False, 14, True), |
920 | + ('read-only', False, 42, False), |
921 | + ('titi', False, 6, False), |
922 | + ('toto', True, -1, False)], |
923 | + self._extract_dir_content_from_str(example)) |
924 | + |
925 | + def test_stat_malformed_response(self): |
926 | + # Invalid xml, neither multistatus nor response are properly closed |
927 | + example = """<?xml version="1.0" encoding="utf-8"?> |
928 | +<D:multistatus xmlns:D="DAV:" xmlns:ns0="urn:uuid:c2f41010-65b3-11d1-a29f-00aa00c14882/"> |
929 | +<D:response> |
930 | +<D:href>http://localhost/</D:href>""" |
931 | + self.assertRaises(errors.InvalidHttpResponse, |
932 | + self._extract_stat_from_str, example) |
933 | + |
934 | + def test_stat_incomplete_format_response(self): |
935 | + # The minimal information is present but doesn't conform to RFC 2518 |
936 | + # (well, as I understand it since the reference servers disagree on |
937 | + # more than details). |
938 | + |
939 | + # The href below is not enclosed in a response element and is |
940 | + # therefore ignored. |
941 | + example = """<?xml version="1.0" encoding="utf-8"?> |
942 | +<D:multistatus xmlns:D="DAV:" xmlns:ns0="urn:uuid:c2f41010-65b3-11d1-a29f-00aa00c14882/"> |
943 | +<D:href>http://localhost/toto</D:href> |
944 | +</D:multistatus>""" |
945 | + self.assertRaises(errors.InvalidHttpResponse, |
946 | + self._extract_stat_from_str, example) |
947 | + |
948 | + def test_stat_apache2_file_example(self): |
949 | + example = """<?xml version="1.0" encoding="utf-8"?> |
950 | +<D:multistatus xmlns:D="DAV:" xmlns:ns0="DAV:"> |
951 | +<D:response xmlns:lp1="DAV:" xmlns:lp2="http://apache.org/dav/props/"> |
952 | +<D:href>/executable</D:href> |
953 | +<D:propstat> |
954 | +<D:prop> |
955 | +<lp1:resourcetype/> |
956 | +<lp1:creationdate>2008-06-08T09:50:15Z</lp1:creationdate> |
957 | +<lp1:getcontentlength>12</lp1:getcontentlength> |
958 | +<lp1:getlastmodified>Sun, 08 Jun 2008 09:50:11 GMT</lp1:getlastmodified> |
959 | +<lp1:getetag>"da9f81-0-9ef33ac0"</lp1:getetag> |
960 | +<lp2:executable>T</lp2:executable> |
961 | +<D:supportedlock> |
962 | +<D:lockentry> |
963 | +<D:lockscope><D:exclusive/></D:lockscope> |
964 | +<D:locktype><D:write/></D:locktype> |
965 | +</D:lockentry> |
966 | +<D:lockentry> |
967 | +<D:lockscope><D:shared/></D:lockscope> |
968 | +<D:locktype><D:write/></D:locktype> |
969 | +</D:lockentry> |
970 | +</D:supportedlock> |
971 | +<D:lockdiscovery/> |
972 | +</D:prop> |
973 | +<D:status>HTTP/1.1 200 OK</D:status> |
974 | +</D:propstat> |
975 | +</D:response> |
976 | +</D:multistatus>""" |
977 | + st = self._extract_stat_from_str(example) |
978 | + self.assertEqual(12, st.st_size) |
979 | + self.assertFalse(stat.S_ISDIR(st.st_mode)) |
980 | + self.assertTrue(stat.S_ISREG(st.st_mode)) |
981 | + self.assertTrue(st.st_mode & stat.S_IXUSR) |
982 | + |
983 | + def test_stat_apache2_dir_depth_1_example(self): |
984 | + example = _get_list_dir_apache2_depth_1_allprop() |
985 | + self.assertRaises(errors.InvalidHttpResponse, |
986 | + self._extract_stat_from_str, example) |
987 | + |
988 | + def test_stat_apache2_dir_depth_0_example(self): |
989 | + example = """<?xml version="1.0" encoding="utf-8"?> |
990 | +<D:multistatus xmlns:D="DAV:" xmlns:ns0="DAV:"> |
991 | +<D:response xmlns:lp1="DAV:" xmlns:lp2="http://apache.org/dav/props/"> |
992 | +<D:href>/</D:href> |
993 | +<D:propstat> |
994 | +<D:prop> |
995 | +<lp1:resourcetype><D:collection/></lp1:resourcetype> |
996 | +<lp1:creationdate>2008-06-08T10:50:38Z</lp1:creationdate> |
997 | +<lp1:getlastmodified>Sun, 08 Jun 2008 10:50:38 GMT</lp1:getlastmodified> |
998 | +<lp1:getetag>"da7f5a-cc-7722db80"</lp1:getetag> |
999 | +<D:supportedlock> |
1000 | +<D:lockentry> |
1001 | +<D:lockscope><D:exclusive/></D:lockscope> |
1002 | +<D:locktype><D:write/></D:locktype> |
1003 | +</D:lockentry> |
1004 | +<D:lockentry> |
1005 | +<D:lockscope><D:shared/></D:lockscope> |
1006 | +<D:locktype><D:write/></D:locktype> |
1007 | +</D:lockentry> |
1008 | +</D:supportedlock> |
1009 | +<D:lockdiscovery/> |
1010 | +</D:prop> |
1011 | +<D:status>HTTP/1.1 200 OK</D:status> |
1012 | +</D:propstat> |
1013 | +</D:response> |
1014 | +</D:multistatus> |
1015 | +""" |
1016 | + st = self._extract_stat_from_str(example) |
1017 | + self.assertEqual(-1, st.st_size) |
1018 | + self.assertTrue(stat.S_ISDIR(st.st_mode)) |
1019 | + self.assertTrue(st.st_mode & stat.S_IXUSR) |
1020 | + |
1021 | + |
1022 | +class CannedRequestHandler(http_server.TestingHTTPRequestHandler): |
1023 | + """Request handler for a unique and pre-defined request. |
1024 | + |
1025 | + The only thing we care about here is that a request is emitted by the |
1026 | + client and we send back a syntactically correct response. |
1027 | + |
1028 | + We expect to receive a *single* request nothing more (and we won't even |
1029 | + check what request it is, we just read until an empty line). |
1030 | + """ |
1031 | + |
1032 | + def _handle_one_request(self): |
1033 | + # The communication between the client and the server is achieved |
1034 | + # through the server defined in the client test case. |
1035 | + tcs = self.server.test_case_server |
1036 | + requestline = self.rfile.readline() |
1037 | + # Read headers |
1038 | + parse_headers(self.rfile) |
1039 | + if requestline.startswith(b'POST'): |
1040 | + # The body should be a single line (or we don't know where it ends |
1041 | + # and we don't want to issue a blocking read) |
1042 | + self.rfile.readline() |
1043 | + |
1044 | + self.wfile.write(tcs.canned_response) |
1045 | + |
1046 | + |
1047 | +class HatterHttpServer(http_server.HttpServer): |
1048 | + """A server giving all sort of crazy responses (like Alice's Hatter). |
1049 | + |
1050 | + This is used to test various error cases in the webdav client. |
1051 | + """ |
1052 | + |
1053 | + def __init__(self): |
1054 | + super(HatterHttpServer, self).__init__(CannedRequestHandler, |
1055 | + protocol_version='HTTP/1.1') |
1056 | + self.canned_response = None |
1057 | + |
1058 | + |
1059 | +class TestDAVErrors(tests.TestCase): |
1060 | + |
1061 | + def setUp(self): |
1062 | + super(TestDAVErrors, self).setUp() |
1063 | + self._transport = webdav.HttpDavTransport |
1064 | + self.server = HatterHttpServer() |
1065 | + self.server.start_server() |
1066 | + self.addCleanup(self.server.stop_server) |
1067 | + |
1068 | + def get_transport(self): |
1069 | + t = self._transport(self.server.get_url()) |
1070 | + return t |
1071 | + |
1072 | + def test_delete_replies_202(self): |
1073 | + """A bogus return code for delete raises an error.""" |
1074 | + self.server.canned_response = b'''HTTP/1.1 202 OK\r |
1075 | +Date: Tue, 10 Aug 2013 14:38:56 GMT\r |
1076 | +Server: Apache/42 (Wonderland)\r |
1077 | +''' |
1078 | + t = self.get_transport() |
1079 | + self.assertRaises(errors.InvalidHttpResponse, t.delete, 'whatever') |
1080 | |
1081 | === added file 'breezy/plugins/webdav/webdav.py' |
1082 | --- breezy/plugins/webdav/webdav.py 1970-01-01 00:00:00 +0000 |
1083 | +++ breezy/plugins/webdav/webdav.py 2022-12-13 16:21:38 +0000 |
1084 | @@ -0,0 +1,854 @@ |
1085 | +# Copyright (C) 2006-2009, 2011, 2012, 2013 Canonical Ltd |
1086 | +# |
1087 | +# This program is free software; you can redistribute it and/or modify |
1088 | +# it under the terms of the GNU General Public License as published by |
1089 | +# the Free Software Foundation; either version 2 of the License, or |
1090 | +# (at your option) any later version. |
1091 | +# |
1092 | +# This program is distributed in the hope that it will be useful, |
1093 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of |
1094 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
1095 | +# GNU General Public License for more details. |
1096 | +# |
1097 | +# You should have received a copy of the GNU General Public License |
1098 | +# along with this program; if not, write to the Free Software |
1099 | +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
1100 | + |
1101 | +"""Implementation of WebDAV for http transports. |
1102 | + |
1103 | +A Transport which complement http transport by implementing |
1104 | +partially the WebDAV protocol to push files. |
1105 | +This should enable remote push operations. |
1106 | +""" |
1107 | + |
1108 | +from io import StringIO |
1109 | +import os |
1110 | +import random |
1111 | +import sys |
1112 | +import time |
1113 | +import xml.sax |
1114 | +import xml.sax.handler |
1115 | + |
1116 | + |
1117 | +from breezy import ( |
1118 | + errors, |
1119 | + osutils, |
1120 | + trace, |
1121 | + transport, |
1122 | + ) |
1123 | +from breezy.transport.http import ( |
1124 | + urllib, |
1125 | + ) |
1126 | + |
1127 | + |
1128 | +class DavResponseHandler(xml.sax.handler.ContentHandler): |
1129 | + """Handle a multi-status DAV response.""" |
1130 | + |
1131 | + def __init__(self): |
1132 | + self.url = None |
1133 | + self.elt_stack = None |
1134 | + self.chars = None |
1135 | + self.chars_wanted = False |
1136 | + self.expected_content_handled = False |
1137 | + |
1138 | + def set_url(self, url): |
1139 | + """Set the url used for error reporting when handling a response.""" |
1140 | + self.url = url |
1141 | + |
1142 | + def startDocument(self): |
1143 | + self.elt_stack = [] |
1144 | + self.chars = None |
1145 | + self.expected_content_handled = False |
1146 | + |
1147 | + def endDocument(self): |
1148 | + self._validate_handling() |
1149 | + if not self.expected_content_handled: |
1150 | + raise errors.InvalidHttpResponse(self.url, |
1151 | + msg='Unknown xml response') |
1152 | + |
1153 | + def startElement(self, name, attrs): |
1154 | + self.elt_stack.append(self._strip_ns(name)) |
1155 | + # The following is incorrect in the general case where elements are |
1156 | + # intermixed with chars in a higher level element. That's not the case |
1157 | + # here (otherwise the chars_wanted will have to be stacked too). |
1158 | + if self.chars_wanted: |
1159 | + self.chars = '' |
1160 | + else: |
1161 | + self.chars = None |
1162 | + |
1163 | + def endElement(self, name): |
1164 | + self.chars = None |
1165 | + self.chars_wanted = False |
1166 | + self.elt_stack.pop() |
1167 | + |
1168 | + def characters(self, chrs): |
1169 | + if self.chars_wanted: |
1170 | + self.chars += chrs |
1171 | + |
1172 | + def _current_element(self): |
1173 | + return self.elt_stack[-1] |
1174 | + |
1175 | + def _strip_ns(self, name): |
1176 | + """Strip the leading namespace from name. |
1177 | + |
1178 | + We don't have namespaces clashes in our context, stripping it makes the |
1179 | + code simpler. |
1180 | + """ |
1181 | + where = name.find(':') |
1182 | + if where == -1: |
1183 | + return name |
1184 | + else: |
1185 | + return name[where + 1:] |
1186 | + |
1187 | + |
1188 | +class DavStatHandler(DavResponseHandler): |
1189 | + """Handle a PROPPFIND DAV response for a file or directory. |
1190 | + |
1191 | + The expected content is: |
1192 | + - a multi-status element containing |
1193 | + - a single response element containing |
1194 | + - a href element |
1195 | + - a propstat element containing |
1196 | + - a status element (ignored) |
1197 | + - a prop element containing at least (other are ignored) |
1198 | + - a getcontentlength element (for files only) |
1199 | + - an executable element (for files only) |
1200 | + - a resourcetype element containing |
1201 | + - a collection element (for directories only) |
1202 | + """ |
1203 | + |
1204 | + def __init__(self): |
1205 | + DavResponseHandler.__init__(self) |
1206 | + # Flags defining the context for the actions |
1207 | + self._response_seen = False |
1208 | + self._init_response_attrs() |
1209 | + |
1210 | + def _init_response_attrs(self): |
1211 | + self.href = None |
1212 | + self.length = -1 |
1213 | + self.executable = None |
1214 | + self.is_dir = False |
1215 | + |
1216 | + def _validate_handling(self): |
1217 | + if self.href is not None: |
1218 | + self.expected_content_handled = True |
1219 | + |
1220 | + def startElement(self, name, attrs): |
1221 | + sname = self._strip_ns(name) |
1222 | + self.chars_wanted = sname in ('href', 'getcontentlength', 'executable') |
1223 | + DavResponseHandler.startElement(self, name, attrs) |
1224 | + |
1225 | + def endElement(self, name): |
1226 | + if self._response_seen: |
1227 | + self._additional_response_starting(name) |
1228 | + |
1229 | + if self._href_end(): |
1230 | + self.href = self.chars |
1231 | + elif self._getcontentlength_end(): |
1232 | + self.length = int(self.chars) |
1233 | + elif self._executable_end(): |
1234 | + self.executable = self.chars |
1235 | + elif self._collection_end(): |
1236 | + self.is_dir = True |
1237 | + |
1238 | + if self._strip_ns(name) == 'response': |
1239 | + self._response_seen = True |
1240 | + self._response_handled() |
1241 | + DavResponseHandler.endElement(self, name) |
1242 | + |
1243 | + |
1244 | + def _response_handled(self): |
1245 | + """A response element inside a multistatus have been parsed.""" |
1246 | + pass |
1247 | + |
1248 | + def _additional_response_starting(self, name): |
1249 | + """A additional response element inside a multistatus begins.""" |
1250 | + sname = self._strip_ns(name) |
1251 | + if sname != 'multistatus': |
1252 | + raise errors.InvalidHttpResponse( |
1253 | + self.url, msg='Unexpected %s element' % name) |
1254 | + |
1255 | + def _href_end(self): |
1256 | + stack = self.elt_stack |
1257 | + return (len(stack) == 3 |
1258 | + and stack[0] == 'multistatus' |
1259 | + and stack[1] == 'response' |
1260 | + and stack[2] == 'href') |
1261 | + |
1262 | + def _getcontentlength_end(self): |
1263 | + stack = self.elt_stack |
1264 | + return (len(stack) == 5 |
1265 | + and stack[0] == 'multistatus' |
1266 | + and stack[1] == 'response' |
1267 | + and stack[2] == 'propstat' |
1268 | + and stack[3] == 'prop' |
1269 | + and stack[4] == 'getcontentlength') |
1270 | + |
1271 | + def _executable_end(self): |
1272 | + stack = self.elt_stack |
1273 | + return (len(stack) == 5 |
1274 | + and stack[0] == 'multistatus' |
1275 | + and stack[1] == 'response' |
1276 | + and stack[2] == 'propstat' |
1277 | + and stack[3] == 'prop' |
1278 | + and stack[4] == 'executable') |
1279 | + |
1280 | + def _collection_end(self): |
1281 | + stack = self.elt_stack |
1282 | + return (len(stack) == 6 |
1283 | + and stack[0] == 'multistatus' |
1284 | + and stack[1] == 'response' |
1285 | + and stack[2] == 'propstat' |
1286 | + and stack[3] == 'prop' |
1287 | + and stack[4] == 'resourcetype' |
1288 | + and stack[5] == 'collection') |
1289 | + |
1290 | + |
1291 | +class _DAVStat(object): |
1292 | + """The stat info as it can be acquired with DAV.""" |
1293 | + |
1294 | + def __init__(self, size, is_dir, is_exec): |
1295 | + self.st_size = size |
1296 | + # We build a mode considering that: |
1297 | + |
1298 | + # - we have no idea about group or other chmod bits so we use a sane |
1299 | + # default (bzr should not care anyway) |
1300 | + |
1301 | + # - we suppose that the user can write |
1302 | + if is_dir: |
1303 | + self.st_mode = 0o040644 |
1304 | + else: |
1305 | + self.st_mode = 0o100644 |
1306 | + if is_exec: |
1307 | + self.st_mode = self.st_mode | 0o755 |
1308 | + |
1309 | + |
1310 | +def _extract_stat_info(url, infile): |
1311 | + """Extract the stat-like information from a DAV PROPFIND response. |
1312 | + |
1313 | + :param url: The url used for the PROPFIND request. |
1314 | + :param infile: A file-like object pointing at the start of the response. |
1315 | + """ |
1316 | + parser = xml.sax.make_parser() |
1317 | + |
1318 | + handler = DavStatHandler() |
1319 | + handler.set_url(url) |
1320 | + parser.setContentHandler(handler) |
1321 | + infile.close = lambda: None |
1322 | + try: |
1323 | + parser.parse(infile) |
1324 | + except xml.sax.SAXParseException as e: |
1325 | + raise errors.InvalidHttpResponse( |
1326 | + url, msg='Malformed xml response: %s' % e) |
1327 | + if handler.is_dir: |
1328 | + size = -1 # directory sizes are meaningless for bzr |
1329 | + is_exec = True |
1330 | + else: |
1331 | + size = handler.length |
1332 | + is_exec = (handler.executable == 'T') |
1333 | + return _DAVStat(size, handler.is_dir, is_exec) |
1334 | + |
1335 | + |
1336 | +class DavListDirHandler(DavStatHandler): |
1337 | + """Handle a PROPPFIND depth 1 DAV response for a directory.""" |
1338 | + def __init__(self): |
1339 | + DavStatHandler.__init__(self) |
1340 | + self.dir_content = None |
1341 | + |
1342 | + def _validate_handling(self): |
1343 | + if self.dir_content is not None: |
1344 | + self.expected_content_handled = True |
1345 | + |
1346 | + def _make_response_tuple(self): |
1347 | + if self.executable == 'T': |
1348 | + is_exec = True |
1349 | + else: |
1350 | + is_exec = False |
1351 | + return (self.href, self.is_dir, self.length, is_exec) |
1352 | + |
1353 | + def _response_handled(self): |
1354 | + """A response element inside a multistatus have been parsed.""" |
1355 | + if self.dir_content is None: |
1356 | + self.dir_content = [] |
1357 | + self.dir_content.append(self._make_response_tuple()) |
1358 | + # Resest the attributes for the next response if any |
1359 | + self._init_response_attrs() |
1360 | + |
1361 | + def _additional_response_starting(self, name): |
1362 | + """A additional response element inside a multistatus begins.""" |
1363 | + pass |
1364 | + |
1365 | + |
1366 | +def _extract_dir_content(url, infile): |
1367 | + """Extract the directory content from a DAV PROPFIND response. |
1368 | + |
1369 | + :param url: The url used for the PROPFIND request. |
1370 | + :param infile: A file-like object pointing at the start of the response. |
1371 | + """ |
1372 | + parser = xml.sax.make_parser() |
1373 | + |
1374 | + handler = DavListDirHandler() |
1375 | + handler.set_url(url) |
1376 | + parser.setContentHandler(handler) |
1377 | + infile.close = lambda: None |
1378 | + try: |
1379 | + parser.parse(infile) |
1380 | + except xml.sax.SAXParseException as e: |
1381 | + raise errors.InvalidHttpResponse( |
1382 | + url, msg='Malformed xml response: %s' % e) |
1383 | + # Reformat for bzr needs |
1384 | + dir_content = handler.dir_content |
1385 | + (dir_name, is_dir) = dir_content[0][:2] |
1386 | + if not is_dir: |
1387 | + raise errors.NotADirectory(url) |
1388 | + dir_len = len(dir_name) |
1389 | + elements = [] |
1390 | + for (href, is_dir, size, is_exec) in dir_content[1:]: # Ignore first element |
1391 | + if href.startswith(dir_name): |
1392 | + name = href[dir_len:] |
1393 | + if name.endswith('/'): |
1394 | + # Get rid of final '/' |
1395 | + name = name[0:-1] |
1396 | + # We receive already url-encoded strings so down-casting is |
1397 | + # safe. And bzr insists on getting strings not unicode strings. |
1398 | + elements.append((str(name), is_dir, size, is_exec)) |
1399 | + return elements |
1400 | + |
1401 | + |
1402 | +class DavResponse(urllib.Response): |
1403 | + """Custom HTTPResponse. |
1404 | + |
1405 | + DAV have some reponses for which the body is of no interest. |
1406 | + """ |
1407 | + _body_ignored_responses = ( |
1408 | + urllib.Response._body_ignored_responses |
1409 | + + [201, 405, 409, 412] |
1410 | + ) |
1411 | + |
1412 | + def begin(self): |
1413 | + """Begin to read the response from the server. |
1414 | + |
1415 | + httplib incorrectly close the connection far too easily. Let's try to |
1416 | + workaround that (as urllib does, but for more cases...). |
1417 | + """ |
1418 | + urllib.Response.begin(self) |
1419 | + if self.status in (201, 204): |
1420 | + self.will_close = False |
1421 | + |
1422 | + |
1423 | +# Takes DavResponse into account: |
1424 | +class DavHTTPConnection(urllib.HTTPConnection): |
1425 | + |
1426 | + response_class = DavResponse |
1427 | + |
1428 | + |
1429 | +class DavHTTPSConnection(urllib.HTTPSConnection): |
1430 | + |
1431 | + response_class = DavResponse |
1432 | + |
1433 | + |
1434 | +class DavConnectionHandler(urllib.ConnectionHandler): |
1435 | + """Custom connection handler. |
1436 | + |
1437 | + We need to use the DavConnectionHTTPxConnection class to take |
1438 | + into account our own DavResponse objects, to be able to |
1439 | + declare our own body ignored responses, sigh. |
1440 | + """ |
1441 | + |
1442 | + def http_request(self, request): |
1443 | + return self.capture_connection(request, DavHTTPConnection) |
1444 | + |
1445 | + def https_request(self, request): |
1446 | + return self.capture_connection(request, DavHTTPSConnection) |
1447 | + |
1448 | + |
1449 | +class DavOpener(urllib.Opener): |
1450 | + """Dav specific needs regarding HTTP(S)""" |
1451 | + |
1452 | + def __init__(self, report_activity=None, ca_certs=None): |
1453 | + super(DavOpener, self).__init__(connection=DavConnectionHandler, |
1454 | + report_activity=report_activity, |
1455 | + ca_certs=ca_certs) |
1456 | + |
1457 | + |
1458 | +class HttpDavTransport(urllib.HttpTransport): |
1459 | + """An transport able to put files using http[s] on a DAV server. |
1460 | + |
1461 | + We don't try to implement the whole WebDAV protocol. Just the minimum |
1462 | + needed for bzr. |
1463 | + """ |
1464 | + |
1465 | + # Implementation note: most methods relies on _perform() to catch |
1466 | + # unexpected status codes (via the xxxRequest's accepted_errors parameter). |
1467 | + # These methods should only handle errors (by adding the respective codes |
1468 | + # into accepted_errors) to provide specific error messages. I.e. mkdir() |
1469 | + # ends with a 'code != 201' to mention 'mkdir failed'. |
1470 | + |
1471 | + _debuglevel = 0 |
1472 | + _opener_class = DavOpener |
1473 | + |
1474 | + def is_readonly(self): |
1475 | + """See Transport.is_readonly.""" |
1476 | + return False |
1477 | + |
1478 | + def _raise_http_error(self, url, response, info=None): |
1479 | + if info is None: |
1480 | + msg = '' |
1481 | + else: |
1482 | + msg = ': ' + info |
1483 | + raise errors.InvalidHttpResponse(url, 'Unable to handle http code %d%s' |
1484 | + % (response.status, msg)) |
1485 | + |
1486 | + def open_write_stream(self, relpath, mode=None): |
1487 | + """See Transport.open_write_stream.""" |
1488 | + # FIXME: this implementation sucks, we should really use chunk encoding |
1489 | + # and buffers. |
1490 | + self.put_bytes(relpath, b"", mode) |
1491 | + result = transport.AppendBasedFileStream(self, relpath) |
1492 | + transport._file_streams[self.abspath(relpath)] = result |
1493 | + return result |
1494 | + |
1495 | + def put_file(self, relpath, f, mode=None): |
1496 | + """See Transport.put_file""" |
1497 | + # FIXME: We read the whole file in memory, using chunked encoding and |
1498 | + # counting bytes while sending them will be far better. Look at reusing |
1499 | + # osutils.pumpfile ? |
1500 | + # |
1501 | + bytes = f.read() |
1502 | + self.put_bytes(relpath, bytes, mode=None) |
1503 | + return len(bytes) |
1504 | + |
1505 | + def put_bytes(self, relpath, bytes, mode=None): |
1506 | + """Copy the bytes object into the location. |
1507 | + |
1508 | + Tests revealed that contrary to what is said in |
1509 | + http://www.rfc.net/rfc2068.html, the put is not |
1510 | + atomic. When putting a file, if the client died, a |
1511 | + partial file may still exists on the server. |
1512 | + |
1513 | + So we first put a temp file and then move it. |
1514 | + |
1515 | + :param relpath: Location to put the contents, relative to base. |
1516 | + :param f: File-like object. |
1517 | + :param mode: Not supported by DAV. |
1518 | + """ |
1519 | + abspath = self._remote_path(relpath) |
1520 | + |
1521 | + # We generate a sufficiently random name to *assume* that |
1522 | + # no collisions will occur and don't worry about it (nor |
1523 | + # handle it). |
1524 | + stamp = '.tmp.%.9f.%d.%d' % (time.time(), |
1525 | + os.getpid(), |
1526 | + random.randint(0, 0x7FFFFFFF)) |
1527 | + # A temporary file to hold all the data to guard against |
1528 | + # client death |
1529 | + tmp_relpath = relpath + stamp |
1530 | + |
1531 | + # Will raise if something gets wrong |
1532 | + self.put_bytes_non_atomic(tmp_relpath, bytes) |
1533 | + |
1534 | + # Now move the temp file |
1535 | + try: |
1536 | + self.move(tmp_relpath, relpath) |
1537 | + except Exception as e: |
1538 | + # If we fail, try to clean up the temporary file |
1539 | + # before we throw the exception but don't let another |
1540 | + # exception mess things up. |
1541 | + exc_type, exc_val, exc_tb = sys.exc_info() |
1542 | + try: |
1543 | + self.delete(tmp_relpath) |
1544 | + except: |
1545 | + raise exc_type(exc_val).with_traceback(exc_tb) |
1546 | + raise # raise the original with its traceback if we can. |
1547 | + |
1548 | + def put_file_non_atomic(self, relpath, f, |
1549 | + mode=None, |
1550 | + create_parent_dir=False, |
1551 | + dir_mode=False): |
1552 | + # Implementing put_bytes_non_atomic rather than put_file_non_atomic |
1553 | + # because to do a put request, we must read all of the file into |
1554 | + # RAM anyway. Better to do that than to have the contents, put |
1555 | + # into a StringIO() and then read them all out again later. |
1556 | + self.put_bytes_non_atomic(relpath, f.read(), mode=mode, |
1557 | + create_parent_dir=create_parent_dir, |
1558 | + dir_mode=dir_mode) |
1559 | + |
1560 | + def put_bytes_non_atomic(self, relpath, bytes: bytes, |
1561 | + mode=None, |
1562 | + create_parent_dir=False, |
1563 | + dir_mode=False): |
1564 | + """See Transport.put_file_non_atomic""" |
1565 | + |
1566 | + abspath = self._remote_path(relpath) |
1567 | + |
1568 | + # FIXME: Accept */* ? Why ? *we* send, we do not receive :-/ |
1569 | + headers = {'Accept': '*/*', |
1570 | + 'Content-type': 'application/octet-stream', |
1571 | + # FIXME: We should complete the |
1572 | + # implementation of |
1573 | + # htmllib.HTTPConnection, it's just a |
1574 | + # shame (at least a waste) that we |
1575 | + # can't use the following. |
1576 | + |
1577 | + # 'Expect': '100-continue', |
1578 | + # 'Transfer-Encoding': 'chunked', |
1579 | + } |
1580 | + |
1581 | + def bare_put_file_non_atomic(): |
1582 | + |
1583 | + response = self.request('PUT', abspath, body=bytes, headers=headers) |
1584 | + code = response.status |
1585 | + |
1586 | + if code in (403, 404, 409): |
1587 | + # Intermediate directories missing |
1588 | + raise transport.NoSuchFile(abspath) |
1589 | + elif code not in (200, 201, 204): |
1590 | + raise self._raise_http_error(abspath, response, 'put file failed') |
1591 | + |
1592 | + try: |
1593 | + bare_put_file_non_atomic() |
1594 | + except transport.NoSuchFile: |
1595 | + if not create_parent_dir: |
1596 | + raise |
1597 | + parent_dir = osutils.dirname(relpath) |
1598 | + if parent_dir: |
1599 | + self.mkdir(parent_dir, mode=dir_mode) |
1600 | + return bare_put_file_non_atomic() |
1601 | + else: |
1602 | + # Don't forget to re-raise if the parent dir doesn't exist |
1603 | + raise |
1604 | + |
1605 | + def _put_bytes_ranged(self, relpath, bytes, at): |
1606 | + """Append the file-like object part to the end of the location. |
1607 | + |
1608 | + :param relpath: Location to put the contents, relative to base. |
1609 | + :param bytes: A string of bytes to upload |
1610 | + :param at: The position in the file to add the bytes |
1611 | + """ |
1612 | + # Acquire just the needed data |
1613 | + # TODO: jam 20060908 Why are we creating a StringIO to hold the |
1614 | + # data, and then using data.read() to send the data |
1615 | + # in the PUTRequest. Rather than just reading in and |
1616 | + # uploading the data. |
1617 | + # Also, if we have to read the whole file into memory anyway |
1618 | + # it would be better to implement put_bytes(), and redefine |
1619 | + # put_file as self.put_bytes(relpath, f.read()) |
1620 | + |
1621 | + # Once we teach httplib to do that, we will use file-like |
1622 | + # objects (see handling chunked data and 100-continue). |
1623 | + abspath = self._remote_path(relpath) |
1624 | + |
1625 | + # FIXME: Accept */* ? Why ? *we* send, we do not receive :-/ |
1626 | + headers = {'Accept': '*/*', |
1627 | + 'Content-type': 'application/octet-stream', |
1628 | + 'Content-Range': 'bytes %d-%d/*' % (at, at + len(bytes) - 1), |
1629 | + # FIXME: We should complete the |
1630 | + # implementation of |
1631 | + # htmllib.HTTPConnection, it's just a |
1632 | + # shame (at least a waste) that we |
1633 | + # can't use the following. |
1634 | + |
1635 | + # 'Expect': '100-continue', |
1636 | + # 'Transfer-Encoding': 'chunked', |
1637 | + } |
1638 | + |
1639 | + |
1640 | + # Content-Range is start-end/size. 'size' is the file size, not the |
1641 | + # chunk size. We can't be sure about the size of the file so put '*' at |
1642 | + # the end of the range instead. |
1643 | + response = self.request('PUT', abspath, body=bytes, headers=headers) |
1644 | + code = response.status |
1645 | + |
1646 | + if code in (403, 404, 409): |
1647 | + raise transport.NoSuchFile(abspath) # Intermediate directories missing |
1648 | + |
1649 | + if code not in (200, 201, 204): |
1650 | + raise self._raise_http_error(abspath, response, 'put file failed') |
1651 | + |
1652 | + def mkdir(self, relpath, mode=None): |
1653 | + """See Transport.mkdir""" |
1654 | + abspath = self._remote_path(relpath) |
1655 | + |
1656 | + response = self.request('MKCOL', abspath) |
1657 | + |
1658 | + code = response.status |
1659 | + # jam 20060908: The error handling seems to be repeated for |
1660 | + # each function. Is it possible to factor it out into |
1661 | + # a helper rather than repeat it for each one? |
1662 | + # (I realize there is some custom behavior) |
1663 | + # Yes it is and will be done. |
1664 | + if code == 403: |
1665 | + # Forbidden (generally server misconfigured or not |
1666 | + # configured for DAV) |
1667 | + raise self._raise_http_error(abspath, response, 'mkdir failed') |
1668 | + elif code == 405: |
1669 | + # Not allowed (generally already exists) |
1670 | + raise transport.FileExists(abspath) |
1671 | + elif code in (404, 409): |
1672 | + # Conflict (intermediate directories do not exist) |
1673 | + raise transport.NoSuchFile(abspath) |
1674 | + elif code != 201: # Created |
1675 | + raise self._raise_http_error(abspath, response, 'mkdir failed') |
1676 | + |
1677 | + def rename(self, rel_from, rel_to): |
1678 | + """Rename without special overwriting""" |
1679 | + abs_from = self._remote_path(rel_from) |
1680 | + abs_to = self._remote_path(rel_to) |
1681 | + |
1682 | + response = self.request( |
1683 | + 'MOVE', abs_from, headers={'Destination': abs_to, 'Overwrite': 'F'}) |
1684 | + |
1685 | + code = response.status |
1686 | + if code == 404: |
1687 | + raise transport.NoSuchFile(abs_from) |
1688 | + if code == 412: |
1689 | + raise transport.FileExists(abs_to) |
1690 | + if code == 409: |
1691 | + # More precisely some intermediate directories are missing |
1692 | + raise transport.NoSuchFile(abs_to) |
1693 | + if code != 201: |
1694 | + # As we don't want to accept overwriting abs_to, 204 |
1695 | + # (meaning abs_to was existing (but empty, the |
1696 | + # non-empty case is 412)) will be an error, a server |
1697 | + # bug even, since we require explicitely to not |
1698 | + # overwrite. |
1699 | + self._raise_http_error(abs_from, response, |
1700 | + 'unable to rename to %r' % (abs_to)) |
1701 | + |
1702 | + def move(self, rel_from, rel_to): |
1703 | + """See Transport.move""" |
1704 | + |
1705 | + abs_from = self._remote_path(rel_from) |
1706 | + abs_to = self._remote_path(rel_to) |
1707 | + |
1708 | + response = self.request( |
1709 | + 'MOVE', abs_from, headers={'Destination': abs_to, 'Overwrite': 'T'}) |
1710 | + |
1711 | + code = response.status |
1712 | + if code == 404: |
1713 | + raise transport.NoSuchFile(abs_from) |
1714 | + if code == 409: |
1715 | + raise errors.DirectoryNotEmpty(abs_to) |
1716 | + # Overwriting allowed, 201 means abs_to did not exist, |
1717 | + # 204 means it did exist. |
1718 | + if code not in (201, 204): |
1719 | + self._raise_http_error(abs_from, response, |
1720 | + 'unable to move to %r' % (abs_to)) |
1721 | + |
1722 | + def delete(self, rel_path): |
1723 | + """ |
1724 | + Delete the item at relpath. |
1725 | + |
1726 | + Note that when a non-empty dir requires to be deleted, a conforming DAV |
1727 | + server will delete the dir and all its content. That does not normally |
1728 | + happen in bzr. |
1729 | + """ |
1730 | + abs_path = self._remote_path(rel_path) |
1731 | + |
1732 | + response = self.request('DELETE', abs_path) |
1733 | + |
1734 | + code = response.status |
1735 | + if code == 404: |
1736 | + raise transport.NoSuchFile(abs_path) |
1737 | + if code not in (200, 204): |
1738 | + self._raise_http_error(abs_path, response, 'unable to delete') |
1739 | + |
1740 | + def copy(self, rel_from, rel_to): |
1741 | + """See Transport.copy""" |
1742 | + abs_from = self._remote_path(rel_from) |
1743 | + abs_to = self._remote_path(rel_to) |
1744 | + |
1745 | + response = self.request( |
1746 | + 'COPY', abs_from, headers={'Destination': abs_to}) |
1747 | + |
1748 | + code = response.status |
1749 | + if code in (404, 409): |
1750 | + raise transport.NoSuchFile(abs_from) |
1751 | + # XXX: our test server returns 201 but apache2 returns 204, needs |
1752 | + # investivation. |
1753 | + if code not in (201, 204): |
1754 | + self._raise_http_error(abs_from, response, |
1755 | + 'unable to copy from %r to %r' |
1756 | + % (abs_from, abs_to)) |
1757 | + |
1758 | + def copy_to(self, relpaths, other, mode=None, pb=None): |
1759 | + """Copy a set of entries from self into another Transport. |
1760 | + |
1761 | + :param relpaths: A list/generator of entries to be copied. |
1762 | + """ |
1763 | + # DavTransport can be a target. So our simple implementation |
1764 | + # just returns the Transport implementation. (Which just does |
1765 | + # a put(get()) |
1766 | + # We only override, because the default HttpTransportBase, explicitly |
1767 | + # disabled it for HTTP |
1768 | + return transport.Transport.copy_to(self, relpaths, other, |
1769 | + mode=mode, pb=pb) |
1770 | + |
1771 | + def listable(self): |
1772 | + """See Transport.listable.""" |
1773 | + return True |
1774 | + |
1775 | + def list_dir(self, relpath): |
1776 | + """ |
1777 | + Return a list of all files at the given location. |
1778 | + """ |
1779 | + return [elt[0] for elt in self._list_tree(relpath, 1)] |
1780 | + |
1781 | + def _list_tree(self, relpath, depth): |
1782 | + abspath = self._remote_path(relpath) |
1783 | + propfind = b"""<?xml version="1.0" encoding="utf-8" ?> |
1784 | + <D:propfind xmlns:D="DAV:"> |
1785 | + <D:allprop/> |
1786 | + </D:propfind> |
1787 | +""" |
1788 | + response = self.request( |
1789 | + 'PROPFIND', abspath, body=propfind, headers={ |
1790 | + 'Depth': '%s' % (depth,), |
1791 | + 'Content-Type': 'application/xml; charset="utf-8"'}) |
1792 | + |
1793 | + code = response.status |
1794 | + if code == 404: |
1795 | + raise transport.NoSuchFile(abspath) |
1796 | + if code == 409: |
1797 | + # More precisely some intermediate directories are missing |
1798 | + raise transport.NoSuchFile(abspath) |
1799 | + if code != 207: |
1800 | + self._raise_http_error(abspath, response, |
1801 | + 'unable to list %r directory' % (abspath)) |
1802 | + return _extract_dir_content(abspath, response) |
1803 | + |
1804 | + def lock_write(self, relpath): |
1805 | + """Lock the given file for exclusive access. |
1806 | + :return: A lock object, which should be passed to Transport.unlock() |
1807 | + """ |
1808 | + # We follow the same path as FTP, which just returns a BogusLock |
1809 | + # object. We don't explicitly support locking a specific file. |
1810 | + # TODO: jam 2006-09-08 SFTP implements this by opening exclusive |
1811 | + # "relpath + '.lock_write'". Does DAV implement anything like |
1812 | + # O_EXCL? |
1813 | + # Alternatively, LocalTransport uses an OS lock to lock the file |
1814 | + # and WebDAV supports some sort of locking. |
1815 | + return self.lock_read(relpath) |
1816 | + |
1817 | + def rmdir(self, relpath): |
1818 | + """See Transport.rmdir.""" |
1819 | + content = self.list_dir(relpath) |
1820 | + if len(content) > 0: |
1821 | + raise errors.DirectoryNotEmpty(self._remote_path(relpath)) |
1822 | + self.delete(relpath) |
1823 | + |
1824 | + def stat(self, relpath): |
1825 | + """See Transport.stat. |
1826 | + |
1827 | + We provide a limited implementation for bzr needs. |
1828 | + """ |
1829 | + abspath = self._remote_path(relpath) |
1830 | + propfind = b"""<?xml version="1.0" encoding="utf-8" ?> |
1831 | + <D:propfind xmlns:D="DAV:"> |
1832 | + <D:allprop/> |
1833 | + </D:propfind> |
1834 | +""" |
1835 | + response = self.request( |
1836 | + 'PROPFIND', abspath, body=propfind, |
1837 | + headers={'Depth': '0', 'Content-Type': 'application/xml; charset="utf-8"'}) |
1838 | + |
1839 | + code = response.status |
1840 | + if code == 404: |
1841 | + raise transport.NoSuchFile(abspath) |
1842 | + if code == 409: |
1843 | + # FIXME: Could this really occur ? |
1844 | + # More precisely some intermediate directories are missing |
1845 | + raise transport.NoSuchFile(abspath) |
1846 | + if code != 207: |
1847 | + self._raise_http_error(abspath, response, |
1848 | + 'unable to list %r directory' % (abspath)) |
1849 | + return _extract_stat_info(abspath, response) |
1850 | + |
1851 | + def iter_files_recursive(self): |
1852 | + """Walk the relative paths of all files in this transport.""" |
1853 | + # We get the whole tree with a single request |
1854 | + tree = self._list_tree('.', 'Infinity') |
1855 | + # Now filter out the directories |
1856 | + for (name, is_dir, size, is_exex) in tree: |
1857 | + if not is_dir: |
1858 | + yield name |
1859 | + |
1860 | + def append_file(self, relpath, f, mode=None): |
1861 | + """See Transport.append_file""" |
1862 | + return self.append_bytes(relpath, f.read(), mode=mode) |
1863 | + |
1864 | + def append_bytes(self, relpath, bytes, mode=None): |
1865 | + """See Transport.append_bytes""" |
1866 | + if self._range_hint is not None: |
1867 | + # TODO: We reuse the _range_hint handled by bzr core, |
1868 | + # unless someone can show me a server implementing |
1869 | + # range for write but not for read. But we may, on |
1870 | + # our own, try to handle a similar flag for write |
1871 | + # ranges supported by a given server. Or at least, |
1872 | + # detect that ranges are not correctly handled and |
1873 | + # fallback to no ranges. |
1874 | + before = self._append_by_head_put(relpath, bytes) |
1875 | + else: |
1876 | + before = self._append_by_get_put(relpath, bytes) |
1877 | + return before |
1878 | + |
1879 | + def _append_by_head_put(self, relpath, bytes): |
1880 | + """Append without getting the whole file. |
1881 | + |
1882 | + When the server allows it, a 'Content-Range' header can be specified. |
1883 | + """ |
1884 | + response = self._head(relpath) |
1885 | + code = response.status |
1886 | + if code == 404: |
1887 | + relpath_size = 0 |
1888 | + else: |
1889 | + # Consider the absence of Content-Length header as |
1890 | + # indicating an existing but empty file (Apache 2.0 |
1891 | + # does this, and there is even a comment in |
1892 | + # modules/http/http_protocol.c calling that a *hack*, |
1893 | + # I agree, it's a hack. On the other hand if the file |
1894 | + # do not exist we get a 404, if the file does exist, |
1895 | + # is not empty and we get no Content-Length header, |
1896 | + # then the server is buggy :-/ ) |
1897 | + relpath_size = int(response.getheader('Content-Length', 0)) |
1898 | + if relpath_size == 0: |
1899 | + trace.mutter('if %s is not empty, the server is buggy' |
1900 | + % relpath) |
1901 | + if relpath_size: |
1902 | + self._put_bytes_ranged(relpath, bytes, relpath_size) |
1903 | + else: |
1904 | + self.put_bytes(relpath, bytes) |
1905 | + |
1906 | + return relpath_size |
1907 | + |
1908 | + def _append_by_get_put(self, relpath, bytes): |
1909 | + # So we need to GET the file first, append to it and finally PUT back |
1910 | + # the result. |
1911 | + full_data = StringIO() |
1912 | + try: |
1913 | + data = self.get(relpath) |
1914 | + full_data.write(data.read()) |
1915 | + except transport.NoSuchFile: |
1916 | + # Good, just do the put then |
1917 | + pass |
1918 | + |
1919 | + # Append the f content |
1920 | + before = full_data.tell() |
1921 | + full_data.write(bytes) |
1922 | + full_data.seek(0) |
1923 | + |
1924 | + self.put_file(relpath, full_data) |
1925 | + |
1926 | + return before |
1927 | + |
1928 | + def get_smart_medium(self): |
1929 | + # smart server and webdav are exclusive. There is really no point to |
1930 | + # use webdav if a smart server is available |
1931 | + raise errors.NoSmartMedium(self) |
1932 | + |
1933 | + |
1934 | +def get_test_permutations(): |
1935 | + """Return the permutations to be used in testing.""" |
1936 | + from .tests import dav_server |
1937 | + return [(HttpDavTransport, dav_server.DAVServer), |
1938 | + (HttpDavTransport, dav_server.QuirkyDAVServer)] |
1939 | |
1940 | === modified file 'breezy/transport/http/urllib.py' |
1941 | --- breezy/transport/http/urllib.py 2022-10-31 18:42:05 +0000 |
1942 | +++ breezy/transport/http/urllib.py 2022-12-13 16:21:38 +0000 |
1943 | @@ -1664,12 +1664,14 @@ |
1944 | 202, |
1945 | 204, |
1946 | 206, # Partial content |
1947 | + 207, # Multi-Status Response (for webdav) |
1948 | 400, |
1949 | 403, |
1950 | 404, # Not found |
1951 | 405, # Method not allowed |
1952 | 406, # Not Acceptable |
1953 | 409, # Conflict |
1954 | + 412, # Precondition failed (for webdav) |
1955 | 416, # Range not satisfiable |
1956 | 422, # Unprocessible entity |
1957 | 501, # Not implemented |