diffmanifests


Namediffmanifests JSON
Version 3.3.3 PyPI version JSON
download
home_pagehttps://github.com/craftslab/diffmanifests
SummaryDiff Manifests via Gitiles API
upload_time2025-08-20 08:24:59
maintainerNone
docs_urlNone
authorJia Jia
requires_pythonNone
licenseApache-2.0
keywords diff manifests gitiles api
VCS
bugtrack_url
requirements colorama coverage coveralls openpyxl pytest requests setuptools twine wheel xmltodict
Travis-CI
coveralls test coverage No coveralls.
            # diffmanifests

[![PyPI](https://img.shields.io/pypi/v/diffmanifests.svg?color=brightgreen)](https://pypi.org/project/diffmanifests/)
[![Coverage Status](https://coveralls.io/repos/github/craftslab/diffmanifests/badge.svg?branch=master)](https://coveralls.io/github/craftslab/diffmanifests?branch=master)
[![License](https://img.shields.io/github/license/craftslab/diffmanifests.svg?color=brightgreen)](https://github.com/craftslab/diffmanifests/blob/master/LICENSE)



*diffmanifests* is a tool used to see deeper differences between manifests via Gerrit & Gitiles API.



## Requirement

- Python >= 3.7



## Install

```bash
pip install diffmanifests
```



## Update

```bash
pip install diffmanifests --upgrade
```



## Run

```bash
diffmanifests --config-file config.json --manifest1-file manifest1.xml --manifest2-file manifest2.xml --output-file output.json
```



## Settings

*Diff Manifests* parameters can be set in the directory [config](https://github.com/craftslab/diffmanifests/blob/master/diffmanifests/config).

An example of configuration in [config.json](https://github.com/craftslab/diffmanifests/blob/master/diffmanifests/config/config.json):

```json
{
  "gerrit": {
    "pass": "pass",
    "url": "http://localhost:80",
    "user": "user"
  },
  "gitiles": {
    "pass": "pass",
    "retry": 1,
    "timeout": -1,
    "url": "http://localhost:80",
    "user": "user"
  }
}
```



## Features

*Diff Manifests* supports the following capabilities:

### 📊 Manifest Comparison

Compare commit 2 with commit 1 in diagram A/B/C to identify changes between manifest versions.

![branch](branch.png)



### 🏷️ Hashtags Support

The tool includes comprehensive support for querying changes with hashtags from the Gerrit REST API v3.12.1. This feature enhances change tracking and categorization.

**Key Benefits:**

- Automatic hashtag extraction from Gerrit changes
- Enhanced change categorization and filtering
- Better integration with Gerrit workflows
- Graceful fallback for changes without hashtags

**Output Structure:**

Each commit in the output JSON now includes a `hashtags` field containing an array of hashtags:

```json
{
  "author": "Developer Name <dev@example.com>",
  "branch": "master",
  "change": "https://gerrit.example.com/c/12345",
  "commit": "abc123def456789...",
  "committer": "Developer Name <dev@example.com>",
  "date": "2025-08-20 12:00:00 +0000",
  "diff": "ADD COMMIT",
  "hashtags": ["security", "cve", "bugfix"],
  "message": "Fix security vulnerability CVE-2025-1234",
  "repo": "platform/frameworks/base",
  "topic": "security-fix",
  "url": "https://android.googlesource.com/platform/frameworks/base/+/abc123def456789"
}
```

**Examples of hashtag usage:**

- `["feature", "ui", "enhancement"]` - New UI features
- `["bugfix", "critical"]` - Critical bug fixes
- `["security", "cve"]` - Security-related changes
- `[]` - Changes without hashtags (empty array)

**Technical Details:**

- Hashtags are retrieved using the [Gerrit REST API ChangeInfo entity](https://gerrit-documentation.storage.googleapis.com/Documentation/3.12.1/rest-api-changes.html#change-info)
- Automatic error handling ensures stable operation even when hashtags are unavailable
- Backward compatibility maintained for existing workflows



## License

Project License can be found [here](https://github.com/craftslab/diffmanifests/blob/master/LICENSE).



## Reference

[git-repo/subcmds/diffmanifests](https://gerrit.googlesource.com/git-repo/+/master/subcmds/diffmanifests.py)

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/craftslab/diffmanifests",
    "name": "diffmanifests",
    "maintainer": null,
    "docs_url": null,
    "requires_python": null,
    "maintainer_email": null,
    "keywords": "diff, manifests, gitiles, api",
    "author": "Jia Jia",
    "author_email": "angersax@sina.com",
    "download_url": "https://files.pythonhosted.org/packages/ba/c8/8b613d424fa0f76cee9a0e88aff8c5d8e7f843803273a1bb2375df3c010c/diffmanifests-3.3.3.tar.gz",
    "platform": null,
    "description": "# diffmanifests\n\n[![PyPI](https://img.shields.io/pypi/v/diffmanifests.svg?color=brightgreen)](https://pypi.org/project/diffmanifests/)\n[![Coverage Status](https://coveralls.io/repos/github/craftslab/diffmanifests/badge.svg?branch=master)](https://coveralls.io/github/craftslab/diffmanifests?branch=master)\n[![License](https://img.shields.io/github/license/craftslab/diffmanifests.svg?color=brightgreen)](https://github.com/craftslab/diffmanifests/blob/master/LICENSE)\n\n\n\n*diffmanifests* is a tool used to see deeper differences between manifests via Gerrit & Gitiles API.\n\n\n\n## Requirement\n\n- Python >= 3.7\n\n\n\n## Install\n\n```bash\npip install diffmanifests\n```\n\n\n\n## Update\n\n```bash\npip install diffmanifests --upgrade\n```\n\n\n\n## Run\n\n```bash\ndiffmanifests --config-file config.json --manifest1-file manifest1.xml --manifest2-file manifest2.xml --output-file output.json\n```\n\n\n\n## Settings\n\n*Diff Manifests* parameters can be set in the directory [config](https://github.com/craftslab/diffmanifests/blob/master/diffmanifests/config).\n\nAn example of configuration in [config.json](https://github.com/craftslab/diffmanifests/blob/master/diffmanifests/config/config.json):\n\n```json\n{\n  \"gerrit\": {\n    \"pass\": \"pass\",\n    \"url\": \"http://localhost:80\",\n    \"user\": \"user\"\n  },\n  \"gitiles\": {\n    \"pass\": \"pass\",\n    \"retry\": 1,\n    \"timeout\": -1,\n    \"url\": \"http://localhost:80\",\n    \"user\": \"user\"\n  }\n}\n```\n\n\n\n## Features\n\n*Diff Manifests* supports the following capabilities:\n\n### \ud83d\udcca Manifest Comparison\n\nCompare commit 2 with commit 1 in diagram A/B/C to identify changes between manifest versions.\n\n![branch](branch.png)\n\n\n\n### \ud83c\udff7\ufe0f Hashtags Support\n\nThe tool includes comprehensive support for querying changes with hashtags from the Gerrit REST API v3.12.1. This feature enhances change tracking and categorization.\n\n**Key Benefits:**\n\n- Automatic hashtag extraction from Gerrit changes\n- Enhanced change categorization and filtering\n- Better integration with Gerrit workflows\n- Graceful fallback for changes without hashtags\n\n**Output Structure:**\n\nEach commit in the output JSON now includes a `hashtags` field containing an array of hashtags:\n\n```json\n{\n  \"author\": \"Developer Name <dev@example.com>\",\n  \"branch\": \"master\",\n  \"change\": \"https://gerrit.example.com/c/12345\",\n  \"commit\": \"abc123def456789...\",\n  \"committer\": \"Developer Name <dev@example.com>\",\n  \"date\": \"2025-08-20 12:00:00 +0000\",\n  \"diff\": \"ADD COMMIT\",\n  \"hashtags\": [\"security\", \"cve\", \"bugfix\"],\n  \"message\": \"Fix security vulnerability CVE-2025-1234\",\n  \"repo\": \"platform/frameworks/base\",\n  \"topic\": \"security-fix\",\n  \"url\": \"https://android.googlesource.com/platform/frameworks/base/+/abc123def456789\"\n}\n```\n\n**Examples of hashtag usage:**\n\n- `[\"feature\", \"ui\", \"enhancement\"]` - New UI features\n- `[\"bugfix\", \"critical\"]` - Critical bug fixes\n- `[\"security\", \"cve\"]` - Security-related changes\n- `[]` - Changes without hashtags (empty array)\n\n**Technical Details:**\n\n- Hashtags are retrieved using the [Gerrit REST API ChangeInfo entity](https://gerrit-documentation.storage.googleapis.com/Documentation/3.12.1/rest-api-changes.html#change-info)\n- Automatic error handling ensures stable operation even when hashtags are unavailable\n- Backward compatibility maintained for existing workflows\n\n\n\n## License\n\nProject License can be found [here](https://github.com/craftslab/diffmanifests/blob/master/LICENSE).\n\n\n\n## Reference\n\n[git-repo/subcmds/diffmanifests](https://gerrit.googlesource.com/git-repo/+/master/subcmds/diffmanifests.py)\n",
    "bugtrack_url": null,
    "license": "Apache-2.0",
    "summary": "Diff Manifests via Gitiles API",
    "version": "3.3.3",
    "project_urls": {
        "Download": "https://github.com/craftslab/diffmanifests/archive/v3.3.3.tar.gz",
        "Homepage": "https://github.com/craftslab/diffmanifests"
    },
    "split_keywords": [
        "diff",
        " manifests",
        " gitiles",
        " api"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "8d81e37a03727e79c191b64e6704fdba75717d71792679b0796cf7cef92cb22d",
                "md5": "aed584b8c130c43cdbd9b858847dffc8",
                "sha256": "6cb55d0a85e69ef7f241d64bc394b7d3aa1a8159d90dec5f7e440f6631f4900d"
            },
            "downloads": -1,
            "filename": "diffmanifests-3.3.3-py2.py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "aed584b8c130c43cdbd9b858847dffc8",
            "packagetype": "bdist_wheel",
            "python_version": "py2.py3",
            "requires_python": null,
            "size": 17801,
            "upload_time": "2025-08-20T08:24:58",
            "upload_time_iso_8601": "2025-08-20T08:24:58.244838Z",
            "url": "https://files.pythonhosted.org/packages/8d/81/e37a03727e79c191b64e6704fdba75717d71792679b0796cf7cef92cb22d/diffmanifests-3.3.3-py2.py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "bac88b613d424fa0f76cee9a0e88aff8c5d8e7f843803273a1bb2375df3c010c",
                "md5": "94f7a324e1a796a14a62124d7c378174",
                "sha256": "a2bc3ca648a243fc23b813af0beb6cafa67321186e628b1b1021be8ddb1045d5"
            },
            "downloads": -1,
            "filename": "diffmanifests-3.3.3.tar.gz",
            "has_sig": false,
            "md5_digest": "94f7a324e1a796a14a62124d7c378174",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 16095,
            "upload_time": "2025-08-20T08:24:59",
            "upload_time_iso_8601": "2025-08-20T08:24:59.484919Z",
            "url": "https://files.pythonhosted.org/packages/ba/c8/8b613d424fa0f76cee9a0e88aff8c5d8e7f843803273a1bb2375df3c010c/diffmanifests-3.3.3.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-20 08:24:59",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "craftslab",
    "github_project": "diffmanifests",
    "travis_ci": true,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "colorama",
            "specs": []
        },
        {
            "name": "coverage",
            "specs": []
        },
        {
            "name": "coveralls",
            "specs": []
        },
        {
            "name": "openpyxl",
            "specs": []
        },
        {
            "name": "pytest",
            "specs": []
        },
        {
            "name": "requests",
            "specs": []
        },
        {
            "name": "setuptools",
            "specs": []
        },
        {
            "name": "twine",
            "specs": []
        },
        {
            "name": "wheel",
            "specs": []
        },
        {
            "name": "xmltodict",
            "specs": []
        }
    ],
    "tox": true,
    "lcname": "diffmanifests"
}
        
Elapsed time: 0.97081s