stak-git 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,6 +1,10 @@
1
1
  # stak
2
2
 
3
- Minimal stacked changes for git.
3
+ [![npm](https://img.shields.io/npm/v/stak-git)](https://www.npmjs.com/package/stak-git)
4
+ [![PyPI](https://img.shields.io/pypi/v/stak-git)](https://pypi.org/project/stak-git/)
5
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
6
+
7
+ Minimal stacked changes for git. A lightweight alternative to [Graphite](https://graphite.dev), [ghstack](https://github.com/ezyang/ghstack), and [git-branchless](https://github.com/arxanas/git-branchless).
4
8
 
5
9
  ## What is it?
6
10
 
@@ -15,13 +19,17 @@ Each branch builds on the previous. Submit all for review at once. When you edit
15
19
  ## Install
16
20
 
17
21
  ```bash
18
- # Copy the script
19
- sudo cp stak /usr/local/bin/stak
22
+ # Homebrew (macOS/Linux)
23
+ brew install memorypasta/tap/stak
24
+
25
+ # npm
26
+ npm install -g stak-git
20
27
 
21
- # Install zsh completions (optional)
22
- sudo mkdir -p /usr/local/share/zsh/site-functions
23
- sudo cp _stak /usr/local/share/zsh/site-functions/_stak
24
- exec zsh
28
+ # pip / uv
29
+ pip install stak-git
30
+
31
+ # Direct install
32
+ curl -fsSL https://raw.githubusercontent.com/memorypasta/stak/main/packaging/install.sh | bash
25
33
  ```
26
34
 
27
35
  ## Commands
@@ -172,11 +180,20 @@ stak ls
172
180
  # ○ billing-feature (2 branches)
173
181
 
174
182
  # Delete when done
175
- stak rm-stak billing-feature
183
+ stak rm-stack billing-feature
176
184
  ```
177
185
 
178
186
  Each stak tracks its own chain of branches independently.
179
187
 
188
+ ## Why stak?
189
+
190
+ | Tool | Complexity | Dependencies | Works with any Git host |
191
+ |------|------------|--------------|-------------------------|
192
+ | **stak** | Minimal | Just bash + git | ✅ Yes |
193
+ | Graphite | Full platform | Requires account | ❌ GitHub only |
194
+ | ghstack | Medium | Python | ❌ GitHub only |
195
+ | git-branchless | High | Rust binary | ✅ Yes |
196
+
180
197
  ## Philosophy
181
198
 
182
199
  - **Minimal**: Only commands you need for stacked changes
@@ -191,3 +208,7 @@ Each stak tracks its own chain of branches independently.
191
208
  - Use `stak status` often to see where you are.
192
209
  - You can always use raw git commands - stak just helps manage the chain.
193
210
  - Run `stak setup-interactive` to install fzf for interactive navigation.
211
+
212
+ ## License
213
+
214
+ MIT
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "stak-git",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "Minimal stacked changes for git - build big features as small branches",
5
5
  "bin": {
6
6
  "stak": "./stak"
@@ -2,7 +2,7 @@
2
2
  # Maintainer: memorypasta <memorypasta@gmail.com>
3
3
 
4
4
  pkgname=stak
5
- pkgver=1.0.0
5
+ pkgver=1.0.2
6
6
  pkgrel=1
7
7
  pkgdesc="Minimal stacked changes for git - build big features as small branches"
8
8
  arch=('any')
@@ -11,7 +11,7 @@ license=('MIT')
11
11
  depends=('git' 'bash')
12
12
  optdepends=('fzf: interactive branch selection')
13
13
  source=("$pkgname-$pkgver.tar.gz::https://github.com/memorypasta/stak/archive/refs/tags/v$pkgver.tar.gz")
14
- sha256sums=('82a137dc6cdd0ceaac5d803c9be7767b1f2bcfe81925a9d27fdfa9cf2ece5d75')
14
+ sha256sums=('3e9393389c725fedd0129944f6b1d8abc8ba8fa9172fba373ff24d4497a39e31')
15
15
 
16
16
  package() {
17
17
  cd "$srcdir/stak-$pkgver"
package/pyproject.toml CHANGED
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "stak-git"
7
- version = "1.0.0"
7
+ version = "1.0.2"
8
8
  description = "Minimal stacked changes for git - build big features as small branches"
9
9
  readme = "README.md"
10
10
  license = "MIT"
package/stak CHANGED
@@ -82,7 +82,9 @@ validate_stack_name() {
82
82
  [[ "$name" == *"/"* ]] && die "invalid stack name: cannot contain '/'"
83
83
  [[ "$name" == *".."* ]] && die "invalid stack name: cannot contain '..'"
84
84
  [[ "$name" == "."* ]] && die "invalid stack name: cannot start with '.'"
85
- [[ "$name" =~ [^a-zA-Z0-9_-] ]] && die "invalid stack name: use only letters, numbers, underscore, hyphen"
85
+ if [[ "$name" =~ [^a-zA-Z0-9_-] ]]; then
86
+ die "invalid stack name: use only letters, numbers, underscore, hyphen"
87
+ fi
86
88
  }
87
89
 
88
90
  validate_branch_name() {
package/stak_git/stak CHANGED
@@ -82,7 +82,9 @@ validate_stack_name() {
82
82
  [[ "$name" == *"/"* ]] && die "invalid stack name: cannot contain '/'"
83
83
  [[ "$name" == *".."* ]] && die "invalid stack name: cannot contain '..'"
84
84
  [[ "$name" == "."* ]] && die "invalid stack name: cannot start with '.'"
85
- [[ "$name" =~ [^a-zA-Z0-9_-] ]] && die "invalid stack name: use only letters, numbers, underscore, hyphen"
85
+ if [[ "$name" =~ [^a-zA-Z0-9_-] ]]; then
86
+ die "invalid stack name: use only letters, numbers, underscore, hyphen"
87
+ fi
86
88
  }
87
89
 
88
90
  validate_branch_name() {