Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-dulwich for openSUSE:Factory checked in at 2021-10-20 20:23:25 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-dulwich (Old) and /work/SRC/openSUSE:Factory/.python-dulwich.new.1890 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-dulwich" Wed Oct 20 20:23:25 2021 rev:42 rq:925730 version:0.20.25 Changes: -------- --- /work/SRC/openSUSE:Factory/python-dulwich/python-dulwich.changes 2021-08-24 10:54:26.204355604 +0200 +++ /work/SRC/openSUSE:Factory/.python-dulwich.new.1890/python-dulwich.changes 2021-10-20 20:24:10.537374050 +0200 @@ -1,0 +2,7 @@ +Sat Oct 16 19:05:48 UTC 2021 - Dirk M??ller <dmuel...@suse.com> + +- update to 0.20.25: + * Fix ``dulwich`` script when installed via setup.py. + * Make default file mask consistent + +------------------------------------------------------------------- Old: ---- dulwich-0.20.24.tar.gz New: ---- dulwich-0.20.25.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-dulwich.spec ++++++ --- /var/tmp/diff_new_pack.Ys11bf/_old 2021-10-20 20:24:10.973374319 +0200 +++ /var/tmp/diff_new_pack.Ys11bf/_new 2021-10-20 20:24:10.977374321 +0200 @@ -20,7 +20,7 @@ %{?!python_module:%define python_module() python-%{**} python3-%{**}} %define skip_python2 1 Name: python-dulwich -Version: 0.20.24 +Version: 0.20.25 Release: 0 Summary: Pure-Python Git Library License: Apache-2.0 OR GPL-2.0-or-later ++++++ dulwich-0.20.24.tar.gz -> dulwich-0.20.25.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dulwich-0.20.24/.github/workflows/pythonpackage.yml new/dulwich-0.20.25/.github/workflows/pythonpackage.yml --- old/dulwich-0.20.24/.github/workflows/pythonpackage.yml 2021-07-18 14:58:17.000000000 +0200 +++ new/dulwich-0.20.25/.github/workflows/pythonpackage.yml 2021-08-23 09:46:56.000000000 +0200 @@ -1,6 +1,10 @@ name: Python package -on: [push, pull_request] +on: + push: + pull_request: + schedule: + - cron: '0 6 * * *' # Daily 6AM UTC build jobs: build: @@ -9,7 +13,7 @@ strategy: matrix: os: [ubuntu-latest, macos-latest, windows-latest] - python-version: [3.5, 3.6, 3.7, 3.8, 3.9, pypy3] + python-version: [3.5, 3.6, 3.7, 3.8, 3.9, 3.10-dev, pypy3] exclude: # sqlite3 exit handling seems to get in the way - os: macos-latest diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dulwich-0.20.24/NEWS new/dulwich-0.20.25/NEWS --- old/dulwich-0.20.24/NEWS 2021-07-18 14:59:47.000000000 +0200 +++ new/dulwich-0.20.25/NEWS 2021-08-23 09:48:25.000000000 +0200 @@ -1,3 +1,11 @@ +0.20.25 2021-08-23 + + * Fix ``dulwich`` script when installed via setup.py. + (Dan Villiom Podlaski Christiansen) + + * Make default file mask consistent + with Git. (Dan Villiom Podlaski Christiansen, #884) + 0.20.24 2021-07-18 * config: disregard UTF-8 BOM when reading file. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dulwich-0.20.24/PKG-INFO new/dulwich-0.20.25/PKG-INFO --- old/dulwich-0.20.24/PKG-INFO 2021-07-18 14:59:56.916478600 +0200 +++ new/dulwich-0.20.25/PKG-INFO 2021-08-23 09:48:33.554272700 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: dulwich -Version: 0.20.24 +Version: 0.20.25 Summary: Python Git Library Home-page: https://www.dulwich.io/ Author: Jelmer Vernooij @@ -9,102 +9,6 @@ Project-URL: Bug Tracker, https://github.com/dulwich/dulwich/issues Project-URL: Repository, https://www.dulwich.io/code/ Project-URL: GitHub, https://github.com/dulwich/dulwich -Description: Dulwich - ======= - - This is the Dulwich project. - - It aims to provide an interface to git repos (both local and remote) that - doesn't call out to git directly but instead uses pure Python. - - **Main website**: <https://www.dulwich.io/> - - **License**: Apache License, version 2 or GNU General Public License, version 2 or later. - - The project is named after the part of London that Mr. and Mrs. Git live in - in the particular Monty Python sketch. - - Installation - ------------ - - By default, Dulwich' setup.py will attempt to build and install the optional C - extensions. The reason for this is that they significantly improve the performance - since some low-level operations that are executed often are much slower in CPython. - - If you don't want to install the C bindings, specify the --pure argument to setup.py:: - - $ python setup.py --pure install - - or if you are installing from pip:: - - $ pip install dulwich --global-option="--pure" - - Note that you can also specify --global-option in a - `requirements.txt <https://pip.pypa.io/en/stable/reference/pip_install/#requirement-specifiers>`_ - file, e.g. like this:: - - dulwich --global-option=--pure - - Getting started - --------------- - - Dulwich comes with both a lower-level API and higher-level plumbing ("porcelain"). - - For example, to use the lower level API to access the commit message of the - last commit:: - - >>> from dulwich.repo import Repo - >>> r = Repo('.') - >>> r.head() - '57fbe010446356833a6ad1600059d80b1e731e15' - >>> c = r[r.head()] - >>> c - <Commit 015fc1267258458901a94d228e39f0a378370466> - >>> c.message - 'Add note about encoding.\n' - - And to print it using porcelain:: - - >>> from dulwich import porcelain - >>> porcelain.log('.', max_entries=1) - -------------------------------------------------- - commit: 57fbe010446356833a6ad1600059d80b1e731e15 - Author: Jelmer Vernoo?? <jel...@jelmer.uk> - Date: Sat Apr 29 2017 23:57:34 +0000 - - Add note about encoding. - - Further documentation - --------------------- - - The dulwich documentation can be found in docs/ and built by running ``make - doc``. It can also be found `on the web <https://www.dulwich.io/docs/>`_. - - Help - ---- - - There is a *#dulwich* IRC channel on the `OFTC <https://www.oftc.net/>`_, and - `dulwich-announce <https://groups.google.com/forum/#!forum/dulwich-announce>`_ - and `dulwich-discuss <https://groups.google.com/forum/#!forum/dulwich-discuss>`_ - mailing lists. - - Contributing - ------------ - - For a full list of contributors, see the git logs or `AUTHORS <AUTHORS>`_. - - If you'd like to contribute to Dulwich, see the `CONTRIBUTING <CONTRIBUTING.rst>`_ - file and `list of open issues <https://github.com/dulwich/dulwich/issues>`_. - - Supported versions of Python - ---------------------------- - - At the moment, Dulwich supports (and is tested on) CPython 3.5 and later and - Pypy. - - The latest release series to support Python 2.x was the 0.19 series. See - the 0.19 branch in the Dulwich git repository. - Keywords: git vcs Platform: UNKNOWN Classifier: Development Status :: 4 - Beta @@ -124,3 +28,103 @@ Provides-Extra: https Provides-Extra: pgp Provides-Extra: watch +License-File: COPYING +License-File: AUTHORS + +Dulwich +======= + +This is the Dulwich project. + +It aims to provide an interface to git repos (both local and remote) that +doesn't call out to git directly but instead uses pure Python. + +**Main website**: <https://www.dulwich.io/> + +**License**: Apache License, version 2 or GNU General Public License, version 2 or later. + +The project is named after the part of London that Mr. and Mrs. Git live in +in the particular Monty Python sketch. + +Installation +------------ + +By default, Dulwich' setup.py will attempt to build and install the optional C +extensions. The reason for this is that they significantly improve the performance +since some low-level operations that are executed often are much slower in CPython. + +If you don't want to install the C bindings, specify the --pure argument to setup.py:: + + $ python setup.py --pure install + +or if you are installing from pip:: + + $ pip install dulwich --global-option="--pure" + +Note that you can also specify --global-option in a +`requirements.txt <https://pip.pypa.io/en/stable/reference/pip_install/#requirement-specifiers>`_ +file, e.g. like this:: + + dulwich --global-option=--pure + +Getting started +--------------- + +Dulwich comes with both a lower-level API and higher-level plumbing ("porcelain"). + +For example, to use the lower level API to access the commit message of the +last commit:: + + >>> from dulwich.repo import Repo + >>> r = Repo('.') + >>> r.head() + '57fbe010446356833a6ad1600059d80b1e731e15' + >>> c = r[r.head()] + >>> c + <Commit 015fc1267258458901a94d228e39f0a378370466> + >>> c.message + 'Add note about encoding.\n' + +And to print it using porcelain:: + + >>> from dulwich import porcelain + >>> porcelain.log('.', max_entries=1) + -------------------------------------------------- + commit: 57fbe010446356833a6ad1600059d80b1e731e15 + Author: Jelmer Vernoo?? <jel...@jelmer.uk> + Date: Sat Apr 29 2017 23:57:34 +0000 + + Add note about encoding. + +Further documentation +--------------------- + +The dulwich documentation can be found in docs/ and built by running ``make +doc``. It can also be found `on the web <https://www.dulwich.io/docs/>`_. + +Help +---- + +There is a *#dulwich* IRC channel on the `OFTC <https://www.oftc.net/>`_, and +`dulwich-announce <https://groups.google.com/forum/#!forum/dulwich-announce>`_ +and `dulwich-discuss <https://groups.google.com/forum/#!forum/dulwich-discuss>`_ +mailing lists. + +Contributing +------------ + +For a full list of contributors, see the git logs or `AUTHORS <AUTHORS>`_. + +If you'd like to contribute to Dulwich, see the `CONTRIBUTING <CONTRIBUTING.rst>`_ +file and `list of open issues <https://github.com/dulwich/dulwich/issues>`_. + +Supported versions of Python +---------------------------- + +At the moment, Dulwich supports (and is tested on) CPython 3.5 and later and +Pypy. + +The latest release series to support Python 2.x was the 0.19 series. See +the 0.19 branch in the Dulwich git repository. + + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dulwich-0.20.24/dulwich/__init__.py new/dulwich-0.20.25/dulwich/__init__.py --- old/dulwich-0.20.24/dulwich/__init__.py 2021-07-18 14:59:47.000000000 +0200 +++ new/dulwich-0.20.25/dulwich/__init__.py 2021-08-23 09:48:25.000000000 +0200 @@ -22,4 +22,4 @@ """Python implementation of the Git file formats and protocols.""" -__version__ = (0, 20, 24) +__version__ = (0, 20, 25) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dulwich-0.20.24/dulwich/__main__.py new/dulwich-0.20.25/dulwich/__main__.py --- old/dulwich-0.20.24/dulwich/__main__.py 1970-01-01 01:00:00.000000000 +0100 +++ new/dulwich-0.20.25/dulwich/__main__.py 2021-08-23 09:46:56.000000000 +0200 @@ -0,0 +1,4 @@ +from . import cli + +if __name__ == "__main__": + cli._main() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dulwich-0.20.24/dulwich/cli.py new/dulwich-0.20.25/dulwich/cli.py --- old/dulwich-0.20.24/dulwich/cli.py 2021-07-18 14:58:17.000000000 +0200 +++ new/dulwich-0.20.25/dulwich/cli.py 2021-08-23 09:46:56.000000000 +0200 @@ -731,7 +731,7 @@ def main(argv=None): if argv is None: - argv = sys.argv + argv = sys.argv[1:] if len(argv) < 1: print("Usage: dulwich <%s> [OPTIONS...]" % ("|".join(commands.keys()))) @@ -747,9 +747,13 @@ return cmd_kls().run(argv[1:]) -if __name__ == "__main__": +def _main(): if "DULWICH_PDB" in os.environ and getattr(signal, "SIGQUIT", None): signal.signal(signal.SIGQUIT, signal_quit) # type: ignore signal.signal(signal.SIGINT, signal_int) - sys.exit(main(sys.argv[1:])) + sys.exit(main()) + + +if __name__ == "__main__": + _main() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dulwich-0.20.24/dulwich/config.py new/dulwich-0.20.25/dulwich/config.py --- old/dulwich-0.20.24/dulwich/config.py 2021-07-18 14:58:17.000000000 +0200 +++ new/dulwich-0.20.25/dulwich/config.py 2021-08-23 09:46:56.000000000 +0200 @@ -41,7 +41,7 @@ MutableMapping, ) except ImportError: # python < 3.7 - from collections import ( + from collections import ( # type: ignore Iterable, MutableMapping, ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dulwich-0.20.24/dulwich/file.py new/dulwich-0.20.25/dulwich/file.py --- old/dulwich-0.20.24/dulwich/file.py 2021-07-18 14:58:17.000000000 +0200 +++ new/dulwich-0.20.25/dulwich/file.py 2021-08-23 09:46:56.000000000 +0200 @@ -66,7 +66,7 @@ os.remove(tmpfile) -def GitFile(filename, mode="rb", bufsize=-1): +def GitFile(filename, mode="rb", bufsize=-1, mask=0o644): """Create a file object that obeys the git file locking protocol. Returns: a builtin file object or a _GitFile object @@ -77,6 +77,10 @@ are not. To read and write from the same file, you can take advantage of the fact that opening a file for write does not actually open the file you request. + + The default file mask makes any created files user-writable and + world-readable. + """ if "a" in mode: raise IOError("append mode not supported for Git files") @@ -85,7 +89,7 @@ if "b" not in mode: raise IOError("text mode not supported for Git files") if "w" in mode: - return _GitFile(filename, mode, bufsize) + return _GitFile(filename, mode, bufsize, mask) else: return io.open(filename, mode, bufsize) @@ -136,7 +140,7 @@ "writelines", ) - def __init__(self, filename, mode, bufsize): + def __init__(self, filename, mode, bufsize, mask): self._filename = filename if isinstance(self._filename, bytes): self._lockfilename = self._filename + b".lock" @@ -146,6 +150,7 @@ fd = os.open( self._lockfilename, os.O_RDWR | os.O_CREAT | os.O_EXCL | getattr(os, "O_BINARY", 0), + mask, ) except FileExistsError: raise FileLocked(filename, self._lockfilename) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dulwich-0.20.24/dulwich/object_store.py new/dulwich-0.20.25/dulwich/object_store.py --- old/dulwich-0.20.24/dulwich/object_store.py 2021-07-18 14:58:17.000000000 +0200 +++ new/dulwich-0.20.25/dulwich/object_store.py 2021-08-23 09:46:56.000000000 +0200 @@ -70,6 +70,11 @@ INFODIR = "info" PACKDIR = "pack" +# use permissions consistent with Git; just readable by everyone +# TODO: should packs also be non-writable on Windows? if so, that +# would requite some rather significant adjustments to the test suite +PACK_MODE = 0o444 if sys.platform != "win32" else 0o644 + class BaseObjectStore(object): """Object store interface.""" @@ -805,7 +810,7 @@ os.rename(path, target_pack) # Write the index. - index_file = GitFile(pack_base_name + ".idx", "wb") + index_file = GitFile(pack_base_name + ".idx", "wb", mask=PACK_MODE) try: write_pack_index_v2(index_file, entries, pack_sha) index_file.close() @@ -837,6 +842,7 @@ fd, path = tempfile.mkstemp(dir=self.path, prefix="tmp_pack_") with os.fdopen(fd, "w+b") as f: + os.chmod(path, PACK_MODE) indexer = PackIndexer(f, resolve_ext_ref=self.get_raw) copier = PackStreamCopier(read_all, read_some, f, delta_iter=indexer) copier.verify() @@ -856,7 +862,7 @@ basename = self._get_pack_basepath(entries) index_name = basename + ".idx" if not os.path.exists(index_name): - with GitFile(index_name, "wb") as f: + with GitFile(index_name, "wb", mask=PACK_MODE) as f: write_pack_index_v2(f, entries, p.get_stored_checksum()) for pack in self.packs: if pack._basename == basename: @@ -885,6 +891,7 @@ fd, path = tempfile.mkstemp(dir=self.pack_dir, suffix=".pack") f = os.fdopen(fd, "wb") + os.chmod(path, PACK_MODE) def commit(): f.flush() @@ -916,7 +923,7 @@ pass if os.path.exists(path): return # Already there, no need to write again - with GitFile(path, "wb") as f: + with GitFile(path, "wb", mask=PACK_MODE) as f: f.write( obj.as_legacy_object(compression_level=self.loose_compression_level) ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dulwich-0.20.24/dulwich/repo.py new/dulwich-0.20.25/dulwich/repo.py --- old/dulwich-0.20.24/dulwich/repo.py 2021-07-18 14:58:17.000000000 +0200 +++ new/dulwich-0.20.25/dulwich/repo.py 2021-08-23 09:46:56.000000000 +0200 @@ -1262,8 +1262,10 @@ root_path_bytes = os.fsencode(self.path) - if not isinstance(fs_paths, list): + if isinstance(fs_paths, str): fs_paths = [fs_paths] + fs_paths = list(fs_paths) + from dulwich.index import ( blob_from_path_and_stat, index_entry_from_stat, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dulwich-0.20.24/dulwich/tests/test_object_store.py new/dulwich-0.20.25/dulwich/tests/test_object_store.py --- old/dulwich-0.20.24/dulwich/tests/test_object_store.py 2021-07-18 14:58:17.000000000 +0200 +++ new/dulwich-0.20.25/dulwich/tests/test_object_store.py 2021-08-23 09:46:56.000000000 +0200 @@ -27,6 +27,7 @@ import os import shutil import stat +import sys import tempfile from dulwich.index import ( @@ -438,6 +439,14 @@ for alt_path in store._read_alternate_paths(): self.assertNotIn("#", alt_path) + def test_file_modes(self): + self.store.add_object(testobject) + path = self.store._get_shafile_path(testobject.id) + mode = os.stat(path).st_mode + + packmode = "0o100444" if sys.platform != "win32" else "0o100666" + self.assertEqual(oct(mode), packmode) + def test_corrupted_object_raise_exception(self): """Corrupted sha1 disk file should raise specific exception""" self.store.add_object(testobject) @@ -448,8 +457,11 @@ self.assertIsNotNone(self.store._get_loose_object(testobject.id)) path = self.store._get_shafile_path(testobject.id) + old_mode = os.stat(path).st_mode + os.chmod(path, 0o600) with open(path, "wb") as f: # corrupt the file f.write(b"") + os.chmod(path, old_mode) expected_error_msg = "Corrupted empty file detected" try: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dulwich-0.20.24/dulwich/tests/test_pack.py new/dulwich-0.20.25/dulwich/tests/test_pack.py --- old/dulwich-0.20.24/dulwich/tests/test_pack.py 2021-07-18 14:58:17.000000000 +0200 +++ new/dulwich-0.20.25/dulwich/tests/test_pack.py 2021-08-23 09:46:56.000000000 +0200 @@ -26,6 +26,7 @@ from hashlib import sha1 import os import shutil +import sys import tempfile import zlib @@ -83,6 +84,7 @@ a_sha = b"6f670c0fb53f9463760b7295fbb814e965fb20c8" tree_sha = b"b2a2766a2879c209ab1176e7e778b81ae422eeaa" commit_sha = b"f18faa16531ac570a3fdc8c7ca16682548dafd12" +indexmode = "0o100644" if sys.platform != "win32" else "0o100666" class PackTests(TestCase): @@ -338,6 +340,7 @@ p.create_index_v1(filename) idx1 = load_pack_index(filename) idx2 = self.get_pack_index(pack1_sha) + self.assertEqual(oct(os.stat(filename).st_mode), indexmode) self.assertEqual(idx1, idx2) def test_create_index_v2(self): @@ -346,6 +349,7 @@ p.create_index_v2(filename) idx1 = load_pack_index(filename) idx2 = self.get_pack_index(pack1_sha) + self.assertEqual(oct(os.stat(filename).st_mode), indexmode) self.assertEqual(idx1, idx2) def test_compute_file_sha(self): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dulwich-0.20.24/dulwich/tests/test_repository.py new/dulwich-0.20.25/dulwich/tests/test_repository.py --- old/dulwich-0.20.24/dulwich/tests/test_repository.py 2021-07-18 14:58:17.000000000 +0200 +++ new/dulwich-0.20.25/dulwich/tests/test_repository.py 2021-08-23 09:46:56.000000000 +0200 @@ -21,10 +21,11 @@ """Tests for the repository.""" +import glob import locale import os -import stat import shutil +import stat import sys import tempfile import warnings @@ -80,6 +81,21 @@ config_text = f.read() self.assertTrue(barestr in config_text, "%r" % config_text) + if isinstance(repo, Repo): + expected_mode = '0o100644' if expect_filemode else '0o100666' + expected = { + 'HEAD': expected_mode, + 'config': expected_mode, + 'description': expected_mode, + } + actual = { + f[len(repo._controldir) + 1:]: oct(os.stat(f).st_mode) + for f in glob.glob(os.path.join(repo._controldir, '*')) + if os.path.isfile(f) + } + + self.assertEqual(expected, actual) + def test_create_memory(self): repo = MemoryRepo.init_bare([], {}) self._check_repo_contents(repo, True) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dulwich-0.20.24/dulwich.egg-info/PKG-INFO new/dulwich-0.20.25/dulwich.egg-info/PKG-INFO --- old/dulwich-0.20.24/dulwich.egg-info/PKG-INFO 2021-07-18 14:59:56.000000000 +0200 +++ new/dulwich-0.20.25/dulwich.egg-info/PKG-INFO 2021-08-23 09:48:33.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: dulwich -Version: 0.20.24 +Version: 0.20.25 Summary: Python Git Library Home-page: https://www.dulwich.io/ Author: Jelmer Vernooij @@ -9,102 +9,6 @@ Project-URL: Bug Tracker, https://github.com/dulwich/dulwich/issues Project-URL: Repository, https://www.dulwich.io/code/ Project-URL: GitHub, https://github.com/dulwich/dulwich -Description: Dulwich - ======= - - This is the Dulwich project. - - It aims to provide an interface to git repos (both local and remote) that - doesn't call out to git directly but instead uses pure Python. - - **Main website**: <https://www.dulwich.io/> - - **License**: Apache License, version 2 or GNU General Public License, version 2 or later. - - The project is named after the part of London that Mr. and Mrs. Git live in - in the particular Monty Python sketch. - - Installation - ------------ - - By default, Dulwich' setup.py will attempt to build and install the optional C - extensions. The reason for this is that they significantly improve the performance - since some low-level operations that are executed often are much slower in CPython. - - If you don't want to install the C bindings, specify the --pure argument to setup.py:: - - $ python setup.py --pure install - - or if you are installing from pip:: - - $ pip install dulwich --global-option="--pure" - - Note that you can also specify --global-option in a - `requirements.txt <https://pip.pypa.io/en/stable/reference/pip_install/#requirement-specifiers>`_ - file, e.g. like this:: - - dulwich --global-option=--pure - - Getting started - --------------- - - Dulwich comes with both a lower-level API and higher-level plumbing ("porcelain"). - - For example, to use the lower level API to access the commit message of the - last commit:: - - >>> from dulwich.repo import Repo - >>> r = Repo('.') - >>> r.head() - '57fbe010446356833a6ad1600059d80b1e731e15' - >>> c = r[r.head()] - >>> c - <Commit 015fc1267258458901a94d228e39f0a378370466> - >>> c.message - 'Add note about encoding.\n' - - And to print it using porcelain:: - - >>> from dulwich import porcelain - >>> porcelain.log('.', max_entries=1) - -------------------------------------------------- - commit: 57fbe010446356833a6ad1600059d80b1e731e15 - Author: Jelmer Vernoo?? <jel...@jelmer.uk> - Date: Sat Apr 29 2017 23:57:34 +0000 - - Add note about encoding. - - Further documentation - --------------------- - - The dulwich documentation can be found in docs/ and built by running ``make - doc``. It can also be found `on the web <https://www.dulwich.io/docs/>`_. - - Help - ---- - - There is a *#dulwich* IRC channel on the `OFTC <https://www.oftc.net/>`_, and - `dulwich-announce <https://groups.google.com/forum/#!forum/dulwich-announce>`_ - and `dulwich-discuss <https://groups.google.com/forum/#!forum/dulwich-discuss>`_ - mailing lists. - - Contributing - ------------ - - For a full list of contributors, see the git logs or `AUTHORS <AUTHORS>`_. - - If you'd like to contribute to Dulwich, see the `CONTRIBUTING <CONTRIBUTING.rst>`_ - file and `list of open issues <https://github.com/dulwich/dulwich/issues>`_. - - Supported versions of Python - ---------------------------- - - At the moment, Dulwich supports (and is tested on) CPython 3.5 and later and - Pypy. - - The latest release series to support Python 2.x was the 0.19 series. See - the 0.19 branch in the Dulwich git repository. - Keywords: git vcs Platform: UNKNOWN Classifier: Development Status :: 4 - Beta @@ -124,3 +28,103 @@ Provides-Extra: https Provides-Extra: pgp Provides-Extra: watch +License-File: COPYING +License-File: AUTHORS + +Dulwich +======= + +This is the Dulwich project. + +It aims to provide an interface to git repos (both local and remote) that +doesn't call out to git directly but instead uses pure Python. + +**Main website**: <https://www.dulwich.io/> + +**License**: Apache License, version 2 or GNU General Public License, version 2 or later. + +The project is named after the part of London that Mr. and Mrs. Git live in +in the particular Monty Python sketch. + +Installation +------------ + +By default, Dulwich' setup.py will attempt to build and install the optional C +extensions. The reason for this is that they significantly improve the performance +since some low-level operations that are executed often are much slower in CPython. + +If you don't want to install the C bindings, specify the --pure argument to setup.py:: + + $ python setup.py --pure install + +or if you are installing from pip:: + + $ pip install dulwich --global-option="--pure" + +Note that you can also specify --global-option in a +`requirements.txt <https://pip.pypa.io/en/stable/reference/pip_install/#requirement-specifiers>`_ +file, e.g. like this:: + + dulwich --global-option=--pure + +Getting started +--------------- + +Dulwich comes with both a lower-level API and higher-level plumbing ("porcelain"). + +For example, to use the lower level API to access the commit message of the +last commit:: + + >>> from dulwich.repo import Repo + >>> r = Repo('.') + >>> r.head() + '57fbe010446356833a6ad1600059d80b1e731e15' + >>> c = r[r.head()] + >>> c + <Commit 015fc1267258458901a94d228e39f0a378370466> + >>> c.message + 'Add note about encoding.\n' + +And to print it using porcelain:: + + >>> from dulwich import porcelain + >>> porcelain.log('.', max_entries=1) + -------------------------------------------------- + commit: 57fbe010446356833a6ad1600059d80b1e731e15 + Author: Jelmer Vernoo?? <jel...@jelmer.uk> + Date: Sat Apr 29 2017 23:57:34 +0000 + + Add note about encoding. + +Further documentation +--------------------- + +The dulwich documentation can be found in docs/ and built by running ``make +doc``. It can also be found `on the web <https://www.dulwich.io/docs/>`_. + +Help +---- + +There is a *#dulwich* IRC channel on the `OFTC <https://www.oftc.net/>`_, and +`dulwich-announce <https://groups.google.com/forum/#!forum/dulwich-announce>`_ +and `dulwich-discuss <https://groups.google.com/forum/#!forum/dulwich-discuss>`_ +mailing lists. + +Contributing +------------ + +For a full list of contributors, see the git logs or `AUTHORS <AUTHORS>`_. + +If you'd like to contribute to Dulwich, see the `CONTRIBUTING <CONTRIBUTING.rst>`_ +file and `list of open issues <https://github.com/dulwich/dulwich/issues>`_. + +Supported versions of Python +---------------------------- + +At the moment, Dulwich supports (and is tested on) CPython 3.5 and later and +Pypy. + +The latest release series to support Python 2.x was the 0.19 series. See +the 0.19 branch in the Dulwich git repository. + + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dulwich-0.20.24/dulwich.egg-info/SOURCES.txt new/dulwich-0.20.25/dulwich.egg-info/SOURCES.txt --- old/dulwich-0.20.24/dulwich.egg-info/SOURCES.txt 2021-07-18 14:59:56.000000000 +0200 +++ new/dulwich-0.20.25/dulwich.egg-info/SOURCES.txt 2021-08-23 09:48:33.000000000 +0200 @@ -50,6 +50,7 @@ docs/tutorial/repo.txt docs/tutorial/tag.txt dulwich/__init__.py +dulwich/__main__.py dulwich/_diff_tree.c dulwich/_objects.c dulwich/_pack.c diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dulwich-0.20.24/releaser.conf new/dulwich-0.20.25/releaser.conf --- old/dulwich-0.20.24/releaser.conf 2021-07-18 14:58:17.000000000 +0200 +++ new/dulwich-0.20.25/releaser.conf 2021-08-23 09:46:56.000000000 +0200 @@ -1,3 +1,4 @@ +# See https://github.com/jelmer/releaser news_file: "NEWS" timeout_days: 5 tag_name: "dulwich-$VERSION" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dulwich-0.20.24/setup.py new/dulwich-0.20.25/setup.py --- old/dulwich-0.20.24/setup.py 2021-07-18 14:59:47.000000000 +0200 +++ new/dulwich-0.20.25/setup.py 2021-08-23 09:48:25.000000000 +0200 @@ -23,7 +23,7 @@ 'For 2.7 support, please install a version prior to 0.20') -dulwich_version_string = '0.20.24' +dulwich_version_string = '0.20.25' class DulwichDistribution(Distribution):