Giter VIP home page Giter VIP logo

warlok's Introduction

warlok

https://readthedocs.org/projects/warlok/badge/?version=latest

Warlok - an evil cousin to arcanist. A command-line tool for GitHub.

It is an opinionated piece of software that fits some workflows better than others. It reduces some boilerplate git commands to a minimum. Probably most of it can be done with git aliases and writing a longer hub command. Even in this early stage it is being extensively dogfooded: try it out and provide feedback in Issues.

Example Story

Start working on a new feature branch, branching off of origin/master.

$ wlk feature new-feature

Behind the scenes this does:

$ git fetch origin
$ git stash
$ git checkout origin/master
$ git checkout -b new-feature
$ git stash pop

Do some work and commit, and commit more - that's part of the fun! Then:

$ wlk push

Behind the scenes this does:

$ git push origin new-feature
$ hub pull-request -b master -h new-feature

You can continue doing work, committing and wlk push-ing. Repeated wlk push calls just do git push origin new-feature.

Create a another feature on top of new-feature:

$ wlk feature another-feature new-feature
# do some work
$ git commit -m "New changes."
$ wlk push

Behind the scenes this does:

$ git fetch origin
$ git stash
$ git checkout new-feature
$ git checkout -b another-feature
$ git stash pop
# your changes come here
$ git commit -m "New changes."
$ git push origin another-feature
$ hub pull-request -b new-feature -h another-feature

Note this still requires hub and setting of reviewers. The end goal is:

  • replace hub with direct API integration;
  • set reviewers based on pull-request message;
  • get rid of git commit step - wlk should pick up staged changes and commit them if necessary.

In the end leaving three commands:

wlk feature
wlk push
wlk merge  (see below)

In The Future

Merging changes

$ wlk merge new-feature

Behind the scenes - merges the pull request associated with new-feature.

Undecided:

  • should it find the sequence of pull-requests and merge the sequence backwards until finally new-feature gets merged into origin/master?
  • should it find the sequence of pull-requests and suggest merging them first?
  • should it merge and inform about "orphaned" pull requests that have their base branch changed?

Checking code review status:

$ wlk review

Waiting on You:
  - #134    [review]   Changed some files.
  - #12     [approved] Implemented a feature.

Waiting on Others:
  - #122    [review]   Hotfix a bug.
  - #44     [changes]  Implemented a big feature.

Limitations & Assumptions & Ideas

  • Limitation: Single remote
  • Idea: Required/Optional fields
  • Idea: Customization of fields via setup.cfg configuration
  • Idea: Custom field handlers via setup.cfg configuration
  • TBD

warlok's People

Contributors

seporaitis avatar

Stargazers

Edvinas Bartkus avatar

Watchers

James Cloos avatar Adam Johnson avatar

warlok's Issues

Replace `hub` with `$EDITOR` and in-place handling in `wlk push`.

As a user upon executing wlk push, if a pull-request does not yet exist, I should see an $EDUTOR launched with a template:

First line of the first commit.

Summary: Subsequent lines
for
a
longer description

Reviewers: seporaitis, johndoe

Upon saving and exiting the editor:

  1. Changes are pushed to remote
  2. Pull-request get created
  3. Reviewers get assigned

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.