Skip to content

litteratum/git-workon

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

git-workon

The tool for managing git projects. You define a working directory and use the tool to start/stop working on a project.

Basic usage

Start the project and open it:

gw go myproject --open

When done, make it done:

gw done myproject

Configuration

The script commands can be fully controlled by CLI arguments, but it is much convenient to have a configuration file defining most of parameters. There is a special config command that will help you to prepare suitable configuration.

gw config [options]

This command will:

  • Create configuration directory if it does not exist. It will use OS-specific config directory, e.g. ~/.config/git_workon for Linux
  • Copy template configuration file to the configuration directory if it does not exist

The configuration file is a simple JSON contains the following parameters:

  • sources - the array of sources from which projects will be cloned. Clone attempts will be done sequentially. Example:

    "sources": [
      "https://github.com/<my_username>",
      "git@github.com:<my_username>"
    ]

    May be overridden by -s/--source argument. You can also define multiple sources: -s first second -s third

  • dir - the working directory. All projects will be cloned to this directory. May be overridden by -d/--directory argument. ~ in path is supported

  • editor - the editor used to open a cloned project or the configuration. May be overridden by -e/--editor argument. If not specified and -e/--editor argument is not provided, the script will try to use the editor specified by $EDITOR environment variable. If that variable is not set, the script will try vi and vim consequently

Configuration example:

{
  "dir": "~/git_workon",
  "editor": "vim",
  "sources": [
    "https://github.com/pallets",
    "https://github.com/pypa"
  ]
}

Start to work on a project

When it is time to work on some project, use the go command:

gw go <project_name> [more projects] [options]

This command will:

  • If the project with a given name already exists in the working directory:
    • opens the project if the -o/--open flag is set
    • does nothing otherwise
  • If the project with a given name does not exist:
    • clone it from git sources into the working directory
    • open the project with a configured editor if the -o/--open flag is set

See gw go --help for other available options on how to control the command.

Finish your work with a project

When you are done with your work, use done command:

gw done [list of projects] [options]

This command will:

  • Check for left stashes
  • Check for unpushed commits
  • Check for left unstaged changes
  • Check for unpushed tags
  • If anything from above was not pushed:
    • fail with an error describing what was left unpushed
  • If everything was pushed:
    • remove a project from the working directory

If a project name was not passed, the command will try to remove all git repos from the working directory.

See gw done --help for other available options on how to control the command.

About

Easily clone GIT repositories and safely remove them

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published