PHPackages                             joachim-n/dorgflow - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. joachim-n/dorgflow

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

joachim-n/dorgflow
==================

 Automated git workflow for drupal.org patches.

2.3.1(1y ago)7011510[24 issues](https://github.com/joachim-n/dorgflow/issues)[8 PRs](https://github.com/joachim-n/dorgflow/pulls)GPL-2.0+PHP

Since Dec 31Pushed 1y ago1 watchersCompare

[ Source](https://github.com/joachim-n/dorgflow)[ Packagist](https://packagist.org/packages/joachim-n/dorgflow)[ Docs](https://github.com/joachim-n/dorgflow)[ RSS](/packages/joachim-n-dorgflow/feed)WikiDiscussions master Synced 2w ago

READMEChangelog (10)Dependencies (4)Versions (30)Used By (0)

Dorgflow: git workflow for drupal.org patches
=============================================

[](#dorgflow-git-workflow-for-drupalorg-patches)

Dorgflow is a set of commands that streamline your work with patches for issues on drupal.org. With Dorgflow, you don't need to download and apply patches, and creating patches and interdiffs is simplified. The only thing that Dorgflow doesn't handle is posting your files back to an issue for review.

Installation
------------

[](#installation)

Install dependencies with Composer:

```
$ composer install --no-dev

```

(The --no-dev option omits the packages that are needed for testing.)

Then either:

- symlink the file dorgflow into a folder that's in your path.
- set the root folder of this repository into your path.

### Optional: For composer driven Drupal projects

[](#optional-for-composer-driven-drupal-projects)

If you're about to use Dorgflow in the context of a composer driver Drupal project, where you e.g. want to use version 8.x-3.1 of a particular module for staging and the production server, you may easily run into trouble setting up your environment for drupal.org contributions controlled by dorgflow. For those of you there is a composer plugin available which helps you manage those environments:

Usage
-----

[](#usage)

### Starting work on an issue

[](#starting-work-on-an-issue)

Start with your local git clone clean and up to date on a release branch, e.g. 8.3.x (for core) or 8.x-1.x (for contrib). We'll call this the *master branch*.

To start working on an issue, simply do:

```
$ dorgflow https://www.drupal.org/node/12345

```

You can also just give the issue number. And it's fine to have anchor links from the URL you're copy-pasting too, thus .

This creates a new git branch for you to work on. If there are patches on the issue, it will also download them and make commits for them. So you'll have something like this:

```
  * (12345-fix-bug) Patch from Drupal.org. Comment: 4; file: 12345-4.fix-bug.patch; fid 99999. Automatic commit by dorgflow.
  * Patch from Drupal.org. Comment: 2; file: 12345-1.fix-bug.permissions-author.patch; fid 88888. Automatic commit by dorgflow.
 /
* (8.3.x) Issue 11111 by whoever.
* Issue 22222 by whoever.

```

The branch name is formed from the issue number and title: 12345-fix-bug. You may change this branch name if you wish, provided you keep the issue number and hyphen prefix.

Each automatic patch commit gives you:

- the index number of the comment the file was added with,
- the URL of the comment,
- the patch filename,
- the patch file's entity ID.

You can now start work on your own fix to the issue!

### Working on an issue

[](#working-on-an-issue)

Commit your work to the feature branch, as you would normally. Make as many commits as you want, with whatever message you want.

You can see the whole of your work so far by doing:

```
$ dorgflow diff

```

This is just a shorthand for doing a git diff against the master branch.

For a reminder of your feature branch and master branch, do:

```
$ dorgflow status

```

### Updating your feature branch

[](#updating-your-feature-branch)

If there are new patches on the issue on drupal.org, do:

```
$ dorgflow update

```

This will create commits for the new patches on your branch.

In the situation that the feature branch has your own commits at the tip of it, which have not been posted as a patch, these are moved to a separate branch.

This situation:

```
  * My commit.
  * (12345-fix-bug) Patch 2 from Drupal.org.
  * Patch 1 from Drupal.org.
 /
* (8.3.x) Issue 11111 by whoever.
* Issue 22222 by whoever.

```

becomes this:

```
  * (12345-fix-bug) Patch 3 from Drupal.org.
  | * (12345-fix-bug-forked-TIMESTAMP) My commit.
  |/
  * Patch 2 from Drupal.org.
  * Patch 1 from Drupal.org.
 /
* (8.3.x) Issue 11111 by whoever.
* Issue 22222 by whoever.

```

You should then manually merge the forked branch back into the feature branch to preserve your work.

### Contributing your work

[](#contributing-your-work)

When you are ready to make a patch, just do:

```
$ dorgflow

```

This will create a patch with a systematic filename, and also an interdiff file. You can then upload these to the issue node on drupal.org.

The commit messages from the git log are output, either since the start of the branch, or the last patch if there is one. You can copy-paste this to your comment on drupal.org to explain your changes.

### Committing a patch (maintainers only)

[](#committing-a-patch-maintainers-only)

If an issue is set to RTBC, and the corresponding feature branch is up to date with the most recent patch, you can apply the changes to the master branch ready to be committed:

```
$ dorgflow apply

```

This puts git back on the master branch, and performs a squash merge so that all the changes from the feature branch are applied and staged.

All you now need to is perform the git commit, using the command suggested by the issue node's credit and committing section.

### Cleaning up

[](#cleaning-up)

When you're completely done with this branch, you can do:

```
$ dorgflow cleanup

```

This performs a checkout of the master branch, and deletes the feature branch.

Alternatively, you can clean up ALL feature branches that have been committed with:

```
$ dorgflow purge

```

This looks at all branches whose name is of the form 'ISSUE-description', and deletes those where a master branch commit exists with that issue number in the commit message.

###  Health Score

38

—

LowBetter than 83% of packages

Maintenance25

Infrequent updates — may be unmaintained

Popularity25

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity74

Established project with proven stability

 Bus Factor1

Top contributor holds 99.8% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~115 days

Total

25

Last Release

711d ago

Major Versions

0.4.0 → 1.0.02017-02-15

1.2.x-dev → 2.0.02018-03-14

### Community

Maintainers

![](https://www.gravatar.com/avatar/21043d4af2cb62a3e316647f63749d05fcbab1c9bd5e67ffa2079b0117e8f65a?d=identicon)[joachim-n](/maintainers/joachim-n)

---

Top Contributors

[![joachim-n](https://avatars.githubusercontent.com/u/105262?v=4)](https://github.com/joachim-n "joachim-n (537 commits)")[![jurgenhaas](https://avatars.githubusercontent.com/u/1475675?v=4)](https://github.com/jurgenhaas "jurgenhaas (1 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/joachim-n-dorgflow/health.svg)

```
[![Health](https://phpackages.com/badges/joachim-n-dorgflow/health.svg)](https://phpackages.com/packages/joachim-n-dorgflow)
```

###  Alternatives

[friendsoftypo3/content-blocks

TYPO3 CMS Content Blocks - Content Types API | Define reusable components via YAML

101466.4k45](/packages/friendsoftypo3-content-blocks)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
