Skip to main content

A git development workspace manager

Project description

GitSpaces

PyPI version Tests License: MIT Python 3.8+

Manage multiple independent clones of a git repository. Similar to ClearCase Views but for Git.

Work on multiple features, branches, or experiments simultaneously without branch switching overhead. Each "space" is an independent clone of your repository.

Note: This project is currently at v3. It has evolved through several major iterations over the past 7 years — originally implemented as a collection of Bash scripts (v1), then rewritten in Go (v2), and now implemented in Python (v3). The prior v1/v2 repositories are archived and available at https://github.com/davfive/gitspaces.golang.

Features

  • Multiple independent clones per repository
  • Fast switching between workspaces
  • Inactive spaces can be put to "sleep"
  • Add more clones on demand
  • Direct editor integration

Installation

pip install gitspaces

Or from source:

git clone https://github.com/davfive/gitspaces.git
cd gitspaces
pip install -e .

Quick Start

Configure project paths and editor:

gitspaces setup

Clone a repository with multiple workspaces:

gitspaces clone https://github.com/user/repo.git -n 3

Creates:

projects/repo/
├── __GITSPACES_PROJECT__
├── main/          # active workspace
└── .zzz/          # sleeping workspaces
    ├── zzz-0/
    ├── zzz-1/
    └── zzz-2/

Basic operations:

gitspaces switch              # switch workspace
gitspaces sleep               # sleep active, wake another
gitspaces rename old new      # rename workspace
gitspaces extend -n 2         # add 2 more clones
gitspaces code                # open in editor

Commands

gitspaces setup                           # configure project paths, editor
gitspaces clone <url> [-n N] [-d DIR]     # clone repo with N workspaces
gitspaces switch [SPACE]                  # switch workspace (interactive if no arg)
gitspaces sleep [SPACE]                   # sleep workspace, optionally wake another
gitspaces rename OLD NEW                  # rename workspace
gitspaces extend -n N [SOURCE]            # add N more clones
gitspaces code [SPACE]                    # open workspace in editor
gitspaces config [KEY] [VALUE]            # view/set configuration

Configuration

Default location: ~/.gitspaces/config.yaml

project_paths:
  - /home/user/projects
default_editor: code

Contributing

See CONTRIBUTING.md.

Deployment

Maintainers: see README.DEPLOYMENT.md for PyPI deployment.

License

MIT - see LICENSE.

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

gitspaces-3.0.0a4.tar.gz (25.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gitspaces-3.0.0a4-py3-none-any.whl (20.9 kB view details)

Uploaded Python 3

File details

Details for the file gitspaces-3.0.0a4.tar.gz.

File metadata

  • Download URL: gitspaces-3.0.0a4.tar.gz
  • Upload date:
  • Size: 25.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for gitspaces-3.0.0a4.tar.gz
Algorithm Hash digest
SHA256 c30aa05c1c327d91c4a8e97a35e16c34e791d0048c86e7978925b1b19e8e6d8b
MD5 4837d2fdb0f8da3a8b7a9c30fc9c9839
BLAKE2b-256 2889b9e347cf170abcb54923138aa0d9542bbe9444f5465546e86956412d7227

See more details on using hashes here.

Provenance

The following attestation bundles were made for gitspaces-3.0.0a4.tar.gz:

Publisher: publish-pypi.yml on davfive/gitspaces

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gitspaces-3.0.0a4-py3-none-any.whl.

File metadata

  • Download URL: gitspaces-3.0.0a4-py3-none-any.whl
  • Upload date:
  • Size: 20.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for gitspaces-3.0.0a4-py3-none-any.whl
Algorithm Hash digest
SHA256 7ba14a20278d288b73ea6d18d6c2ef71f3fe9459a8875bf53d4567908e3e2794
MD5 65021c19db2cf54d98b7ee7b33d2e2ea
BLAKE2b-256 51ced4024fa95bb3c2d206e700c25d24afb4aa3f384ec14a0d8477f7a3249e0b

See more details on using hashes here.

Provenance

The following attestation bundles were made for gitspaces-3.0.0a4-py3-none-any.whl:

Publisher: publish-pypi.yml on davfive/gitspaces

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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