{"id":13495274,"url":"https://github.com/jelmer/dulwich","last_synced_at":"2025-05-13T21:03:38.388Z","repository":{"id":527448,"uuid":"156187","full_name":"jelmer/dulwich","owner":"jelmer","description":"Pure-Python Git implementation","archived":false,"fork":false,"pushed_at":"2025-05-05T14:31:17.000Z","size":17586,"stargazers_count":2112,"open_issues_count":108,"forks_count":406,"subscribers_count":51,"default_branch":"master","last_synced_at":"2025-05-05T15:51:22.179Z","etag":null,"topics":["cpython","dulwich","git","pypy","python","python-3","version-control"],"latest_commit_sha":null,"homepage":"https://www.dulwich.io/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jelmer.png","metadata":{"files":{"readme":"README.rst","changelog":"NEWS","contributing":"CONTRIBUTING.rst","funding":".github/FUNDING.yml","license":"COPYING","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"jelmer"}},"created_at":"2009-03-22T05:09:18.000Z","updated_at":"2025-05-05T14:31:20.000Z","dependencies_parsed_at":"2024-05-14T08:54:16.876Z","dependency_job_id":"a7a3d50e-5d0c-4e14-93ca-873b70036c66","html_url":"https://github.com/jelmer/dulwich","commit_stats":{"total_commits":4118,"total_committers":253,"mean_commits":"16.276679841897234","dds":"0.33244293346284604","last_synced_commit":"fbd1315bd4855e82bbb355b8c005982f67401750"},"previous_names":["dulwich/dulwich"],"tags_count":305,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jelmer%2Fdulwich","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jelmer%2Fdulwich/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jelmer%2Fdulwich/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jelmer%2Fdulwich/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jelmer","download_url":"https://codeload.github.com/jelmer/dulwich/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254027875,"owners_count":22002128,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpython","dulwich","git","pypy","python","python-3","version-control"],"created_at":"2024-07-31T19:01:33.114Z","updated_at":"2025-05-13T21:03:38.357Z","avatar_url":"https://github.com/jelmer.png","language":"Python","funding_links":["https://github.com/sponsors/jelmer"],"categories":["Python"],"sub_categories":[],"readme":"Dulwich\n=======\n\nThis is the Dulwich project.\n\nIt aims to provide an interface to git repos (both local and remote) that\ndoesn't call out to git directly but instead uses pure Python.\n\n**Main website**: \u003chttps://www.dulwich.io/\u003e\n\n**License**: Apache License, version 2 or GNU General Public License, version 2 or later.\n\nSPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later\n\nThe project is named after the part of London that Mr. and Mrs. Git live in\nthe particular Monty Python sketch.\n\nDifferences with other Python Git libraries\n-------------------------------------------\n\nUnlike other Python Git libraries, Dulwich is available as a standalone\npackage that doesn't depend on git (like GitPython) being installed or any\nnative code (like pygit2).\n\nThis comes at the cost of speed, but makes it easier to deploy in environments\nwhere git isn't available or where it's important to have a pure Python\nimplementation.\n\nTo improve performance, Dulwich includes optional Rust bindings that can be\nused to speed up low-level operations.\n\nInstallation\n------------\n\nBy default, Dulwich' setup.py will attempt to build and install the optional Rust\nextensions. The reason for this is that they significantly improve the performance\nsince some low-level operations that are executed often are much slower in CPython.\n\nIf you don't want to install the Rust bindings, specify the --pure argument to setup.py::\n\n    $ python setup.py --pure install\n\nor if you are installing from pip::\n\n    $ pip install --no-binary dulwich dulwich --config-settings \"--build-option=--pure\"\n\nNote that you can also specify --build-option in a\n`requirements.txt \u003chttps://pip.pypa.io/en/stable/reference/requirement-specifiers/\u003e`_\nfile, e.g. like this::\n\n    dulwich --config-settings \"--build-option=--pure\"\n\nGetting started\n---------------\n\nDulwich comes with both a lower-level API and higher-level plumbing (\"porcelain\").\n\nFor example, to use the lower level API to access the commit message of the\nlast commit::\n\n    \u003e\u003e\u003e from dulwich.repo import Repo\n    \u003e\u003e\u003e r = Repo('.')\n    \u003e\u003e\u003e r.head()\n    '57fbe010446356833a6ad1600059d80b1e731e15'\n    \u003e\u003e\u003e c = r[r.head()]\n    \u003e\u003e\u003e c\n    \u003cCommit 015fc1267258458901a94d228e39f0a378370466\u003e\n    \u003e\u003e\u003e c.message\n    'Add note about encoding.\\n'\n\nAnd to print it using porcelain::\n\n    \u003e\u003e\u003e from dulwich import porcelain\n    \u003e\u003e\u003e porcelain.log('.', max_entries=1)\n    --------------------------------------------------\n    commit: 57fbe010446356833a6ad1600059d80b1e731e15\n    Author: Jelmer Vernooĳ \u003cjelmer@jelmer.uk\u003e\n    Date:   Sat Apr 29 2017 23:57:34 +0000\n\n    Add note about encoding.\n\nFurther documentation\n---------------------\n\nThe dulwich documentation can be found in docs/ and built by running ``make\ndoc``. It can also be found `on the web \u003chttps://www.dulwich.io/docs/\u003e`_.\n\nHelp\n----\n\nThere is a *#dulwich* IRC channel on the `OFTC \u003chttps://www.oftc.net/\u003e`_, and\na `dulwich-discuss \u003chttps://groups.google.com/forum/#!forum/dulwich-discuss\u003e`_\nmailing list.\n\nContributing\n------------\n\nFor a full list of contributors, see the git logs or `AUTHORS \u003cAUTHORS\u003e`_.\n\nIf you'd like to contribute to Dulwich, see the `CONTRIBUTING \u003cCONTRIBUTING.rst\u003e`_\nfile and `list of open issues \u003chttps://github.com/dulwich/dulwich/issues\u003e`_.\n\nSupported versions of Python\n----------------------------\n\nAt the moment, Dulwich supports (and is tested on) CPython 3.9 and later and\nPypy.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjelmer%2Fdulwich","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjelmer%2Fdulwich","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjelmer%2Fdulwich/lists"}