Skip to main content

No project description provided

Project description

GitRange

Git is confusing. Most of us know the basics, but we all have to Google for specific incantations from time to time. If you haven't used a different VCS, like Mercurial, then you may not realize that this Googling for these somewhat common things isn't normal or necessary--that it's a consequence of Git's inconsistent UI.

GitRange (gr) attempts to bring some of that consistency to git by providing a common syntax for specifying git commit ranges and passing those ranges to a git subcommand.

Usage

USAGE: gr <selector> [<git-command>] [<git-command-args>]

  Invoke a git command with a more sane range-selection syntax.

SELECTORS

  -b, --branch <commit-id>  A range of commits from <commit-id> to the common
                            ancestor of <commit-id> and `master`.

  -c, --commit <commit-id>  Exactly the commit identified by <commit-id>.

COMMIT ID SYNTAX

  `.`, `0`                  The current commit.

  <branch-name>             The name of the git branch. Resolves to the
                            branch's tip.

  <commit-sha>              A git commit sha.

  <tag>                     A git tag.

  (nonpositive integers)    A relative number of parent commits from `.`.
                            Positive integers are an error.

OTHER ARGUMENTS

  git-command               The git command to invoke with the range resulting
                            from the provided selector. If this is missing, the
                            range will be printed directly (useful for
                            debugging). This should not include the "git"
                            (e.g., "log", not "git log").

  git-command-args          The arguments to the git command. These will be
                            passed to <git-command> before the range.

EXAMPLES

  Log all changes in a branch:

    $ gr -b my-feature-branch log

  Log all changes in the current branch

    $ gr -b . log

  Diff a single changeset (against its parent):

    $ gr -c <git-sha1> diff

  Diff the current changeset (against its parent):

    $ gr -c . diff

  Diff an entire branch

    $ gr -b my-feature-branch diff

  Diff the current branch up to the parent commit

    $ gr -b -1 diff
    diff --git a/bar b/bar
    new file mode 100644
    index 0000000000..e69de29bb2
    diff --git a/foo b/foo
    new file mode 100644
    index 0000000000..e69de29bb2

  Pass other arguments

    $ gr -b . log --oneline --graph --decorate
    * dd6e2ccff4 (HEAD -> my-feature-branch) Removed foo and bar
    * 357bc24de5 Added bar
    * 8dd48a84d0 Added foo

  Debug a range

    $ gr -c .
    HEAD~1..HEAD

Contributing

All pull requests must pass the CI checks. These include mypy --strict and black --check for all Python files. Further, this README.md is generated by gen/mkreadme.py. Instead of editing it directly, edit gen/README.md (the template file used to generate it).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gitrange-0.0.4.tar.gz (3.0 kB view hashes)

Uploaded Source

Built Distribution

gitrange-0.0.4-py3-none-any.whl (2.8 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page