git-nested 1.0.3__tar.gz
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.
- git_nested-1.0.3/.codecov.yml +18 -0
- git_nested-1.0.3/.fish.rc +17 -0
- git_nested-1.0.3/.gitattributes +1 -0
- git_nested-1.0.3/.github/workflows/publish.yml +45 -0
- git_nested-1.0.3/.github/workflows/test.yml +45 -0
- git_nested-1.0.3/.gitignore +13 -0
- git_nested-1.0.3/.rc +19 -0
- git_nested-1.0.3/CONTRIBUTING.md +187 -0
- git_nested-1.0.3/LICENSE +21 -0
- git_nested-1.0.3/PKG-INFO +422 -0
- git_nested-1.0.3/README.md +396 -0
- git_nested-1.0.3/docs/diagrams.md +470 -0
- git_nested-1.0.3/lib/git-nested +13 -0
- git_nested-1.0.3/lib/git_nested.egg-info/PKG-INFO +422 -0
- git_nested-1.0.3/lib/git_nested.egg-info/SOURCES.txt +47 -0
- git_nested-1.0.3/lib/git_nested.egg-info/dependency_links.txt +1 -0
- git_nested-1.0.3/lib/git_nested.egg-info/entry_points.txt +2 -0
- git_nested-1.0.3/lib/git_nested.egg-info/requires.txt +1 -0
- git_nested-1.0.3/lib/git_nested.egg-info/top_level.txt +1 -0
- git_nested-1.0.3/lib/git_nested.py +2001 -0
- git_nested-1.0.3/pyproject.toml +94 -0
- git_nested-1.0.3/setup.cfg +4 -0
- git_nested-1.0.3/share/completion.bash +44 -0
- git_nested-1.0.3/share/enable-completion.sh +35 -0
- git_nested-1.0.3/share/git-nested.fish +34 -0
- git_nested-1.0.3/share/zsh-completion/_git-nested +72 -0
- git_nested-1.0.3/test/conftest.py +607 -0
- git_nested-1.0.3/test/scenarios/test_extraction.py +165 -0
- git_nested-1.0.3/test/scenarios/test_filemode.py +66 -0
- git_nested-1.0.3/test/scenarios/test_filter.py +254 -0
- git_nested-1.0.3/test/test_branch.py +282 -0
- git_nested-1.0.3/test/test_clean.py +32 -0
- git_nested-1.0.3/test/test_clone.py +116 -0
- git_nested-1.0.3/test/test_completion.py +143 -0
- git_nested-1.0.3/test/test_encode.py +62 -0
- git_nested-1.0.3/test/test_error.py +200 -0
- git_nested-1.0.3/test/test_fetch.py +34 -0
- git_nested-1.0.3/test/test_gitignore.py +41 -0
- git_nested-1.0.3/test/test_init.py +54 -0
- git_nested-1.0.3/test/test_nested_in_nested.py +369 -0
- git_nested-1.0.3/test/test_pull.py +582 -0
- git_nested-1.0.3/test/test_push.py +497 -0
- git_nested-1.0.3/test/test_rebase.py +47 -0
- git_nested-1.0.3/test/test_reclone.py +38 -0
- git_nested-1.0.3/test/test_status.py +107 -0
- git_nested-1.0.3/test/test_submodule.py +25 -0
- git_nested-1.0.3/test/test_version.py +14 -0
- git_nested-1.0.3/test/unittest/test_logging.py +162 -0
- git_nested-1.0.3/uv.lock +689 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# CodeCov config for Pull-Request comments
|
|
2
|
+
|
|
3
|
+
comment:
|
|
4
|
+
layout: "reach, diff, flags, files"
|
|
5
|
+
behavior: default
|
|
6
|
+
require_changes: false
|
|
7
|
+
require_base: false
|
|
8
|
+
require_head: true
|
|
9
|
+
hide_project_coverage: false
|
|
10
|
+
|
|
11
|
+
coverage:
|
|
12
|
+
status:
|
|
13
|
+
project:
|
|
14
|
+
default:
|
|
15
|
+
informational: true
|
|
16
|
+
patch:
|
|
17
|
+
default:
|
|
18
|
+
informational: true
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#------------------------------------------------------------------------------
|
|
2
|
+
#
|
|
3
|
+
# This is the `git-nested` initialization script.
|
|
4
|
+
#
|
|
5
|
+
# This script turns on the `git-nested` Git subcommand for the *Fish* shell.
|
|
6
|
+
#
|
|
7
|
+
# Just add a line like this to your `~/.config/fish/config.fish`:
|
|
8
|
+
#
|
|
9
|
+
# source /path/to/git-nested/.fish.rc
|
|
10
|
+
#
|
|
11
|
+
#------------------------------------------------------------------------------
|
|
12
|
+
|
|
13
|
+
set GIT_NESTED_ROOT (dirname (realpath (status --current-filename)))
|
|
14
|
+
set PATH $GIT_NESTED_ROOT/lib $PATH
|
|
15
|
+
|
|
16
|
+
# Load git-nested completions
|
|
17
|
+
source $GIT_NESTED_ROOT/share/git-nested.fish
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
* text eol=lf
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
name: Publish to PyPI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags: ['*.*.*']
|
|
6
|
+
|
|
7
|
+
jobs:
|
|
8
|
+
build:
|
|
9
|
+
runs-on: ubuntu-latest
|
|
10
|
+
steps:
|
|
11
|
+
- name: Checkout code
|
|
12
|
+
uses: actions/checkout@v4
|
|
13
|
+
with:
|
|
14
|
+
fetch-depth: 0
|
|
15
|
+
- name: Install uv
|
|
16
|
+
uses: astral-sh/setup-uv@v7
|
|
17
|
+
with:
|
|
18
|
+
python-version: '3.13'
|
|
19
|
+
enable-cache: true
|
|
20
|
+
- name: Setup project
|
|
21
|
+
run: uv sync --frozen
|
|
22
|
+
- name: Build package
|
|
23
|
+
run: uv run poe build
|
|
24
|
+
- name: Upload dist
|
|
25
|
+
uses: actions/upload-artifact@v4
|
|
26
|
+
with:
|
|
27
|
+
name: dist
|
|
28
|
+
path: dist/
|
|
29
|
+
|
|
30
|
+
publish:
|
|
31
|
+
needs: build
|
|
32
|
+
runs-on: ubuntu-latest
|
|
33
|
+
environment:
|
|
34
|
+
name: pypi
|
|
35
|
+
url: https://pypi.org/project/git-nested/
|
|
36
|
+
permissions:
|
|
37
|
+
id-token: write
|
|
38
|
+
steps:
|
|
39
|
+
- name: Download dist
|
|
40
|
+
uses: actions/download-artifact@v4
|
|
41
|
+
with:
|
|
42
|
+
name: dist
|
|
43
|
+
path: dist/
|
|
44
|
+
- name: Publish to PyPI
|
|
45
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
name: Run Tests
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: ['*']
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
test:
|
|
11
|
+
runs-on: ${{ matrix.os }}
|
|
12
|
+
strategy:
|
|
13
|
+
matrix:
|
|
14
|
+
os: [ubuntu-latest, macos-latest]
|
|
15
|
+
python-version: ['3.10', '3.11', '3.12', '3.13', '3.14']
|
|
16
|
+
|
|
17
|
+
steps:
|
|
18
|
+
- name: Checkout code
|
|
19
|
+
uses: actions/checkout@v4
|
|
20
|
+
- name: Install uv
|
|
21
|
+
uses: astral-sh/setup-uv@v7
|
|
22
|
+
with:
|
|
23
|
+
python-version: ${{ matrix.python-version }}
|
|
24
|
+
enable-cache: true
|
|
25
|
+
- name: Setup project
|
|
26
|
+
run: uv sync --frozen
|
|
27
|
+
- name: git config
|
|
28
|
+
run: |
|
|
29
|
+
git config --global user.email "you@example.com";
|
|
30
|
+
git config --global user.name "Your Name";
|
|
31
|
+
git config --global init.defaultBranch "master";
|
|
32
|
+
git config --global --add safe.directory "$PWD";
|
|
33
|
+
git config --global --add safe.directory "$PWD.git";
|
|
34
|
+
- name: Run poe all
|
|
35
|
+
run: uv run poe all
|
|
36
|
+
- name: Upload coverage reports to Codecov
|
|
37
|
+
if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.14'
|
|
38
|
+
uses: codecov/codecov-action@v5
|
|
39
|
+
with:
|
|
40
|
+
token: ${{ secrets.CODECOV_TOKEN }}
|
|
41
|
+
- name: Upload test results to Codecov
|
|
42
|
+
if: ${{ !cancelled() }}
|
|
43
|
+
uses: codecov/test-results-action@v1
|
|
44
|
+
with:
|
|
45
|
+
token: ${{ secrets.CODECOV_TOKEN }}
|
git_nested-1.0.3/.rc
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
[[ -n ${ZSH_VERSION-} ]] &&
|
|
4
|
+
GIT_NESTED_ROOT=$0 ||
|
|
5
|
+
GIT_NESTED_ROOT=$BASH_SOURCE
|
|
6
|
+
|
|
7
|
+
[[ $GIT_NESTED_ROOT =~ ^/ ]] ||
|
|
8
|
+
GIT_NESTED_ROOT=$PWD/$GIT_NESTED_ROOT
|
|
9
|
+
|
|
10
|
+
GIT_NESTED_ROOT=$(
|
|
11
|
+
cd "$(dirname "$GIT_NESTED_ROOT")" || return
|
|
12
|
+
pwd
|
|
13
|
+
) || return
|
|
14
|
+
|
|
15
|
+
export GIT_NESTED_ROOT
|
|
16
|
+
export PATH=$GIT_NESTED_ROOT/lib:$PATH
|
|
17
|
+
export MANPATH=$GIT_NESTED_ROOT/man:$MANPATH
|
|
18
|
+
|
|
19
|
+
source "$GIT_NESTED_ROOT/share/enable-completion.sh"
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
# Contributing to git-nested
|
|
2
|
+
|
|
3
|
+
Thank you for your interest in contributing to git-nested! This document provides guidelines and instructions for contributing to the project.
|
|
4
|
+
|
|
5
|
+
## Code of Conduct
|
|
6
|
+
|
|
7
|
+
Please be respectful and constructive in all interactions with the community. We aim to maintain a welcoming and inclusive environment for all contributors.
|
|
8
|
+
|
|
9
|
+
## Getting Started
|
|
10
|
+
|
|
11
|
+
### Setting Up Your Development Environment
|
|
12
|
+
|
|
13
|
+
1. Fork the repository on GitHub
|
|
14
|
+
2. Clone your fork locally:
|
|
15
|
+
```bash
|
|
16
|
+
git clone https://github.com/YOUR_USERNAME/git-nested
|
|
17
|
+
cd git-nested
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
3. Install development dependencies:
|
|
21
|
+
```bash
|
|
22
|
+
# Using uv (recommended)
|
|
23
|
+
uv sync --dev
|
|
24
|
+
|
|
25
|
+
# Or using pip
|
|
26
|
+
pip install -e ".[dev]"
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
4. Verify your setup:
|
|
30
|
+
```bash
|
|
31
|
+
uv run poe all
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Development Workflow
|
|
35
|
+
|
|
36
|
+
### Making Changes
|
|
37
|
+
|
|
38
|
+
1. Create a feature branch from `main`:
|
|
39
|
+
```bash
|
|
40
|
+
git checkout -b feature/your-feature-name
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
2. Make your changes, following the coding standards below
|
|
44
|
+
|
|
45
|
+
3. Add or update tests to cover your changes
|
|
46
|
+
|
|
47
|
+
4. Run all checks before committing:
|
|
48
|
+
```bash
|
|
49
|
+
uv run poe all
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Running Tests Individually
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
# Run all tests
|
|
56
|
+
uv run poe test
|
|
57
|
+
|
|
58
|
+
# Run specific test file
|
|
59
|
+
uv run poe test test/test_clone.py
|
|
60
|
+
|
|
61
|
+
# Run with verbose output
|
|
62
|
+
uv run poe test -vv
|
|
63
|
+
|
|
64
|
+
# You can also run pytest directly
|
|
65
|
+
uv run pytest
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Code Quality
|
|
69
|
+
|
|
70
|
+
We use [Ruff](https://github.com/astral-sh/ruff) for both linting and formatting:
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
# Check code quality
|
|
74
|
+
uv run poe lint
|
|
75
|
+
|
|
76
|
+
# Auto-format code
|
|
77
|
+
uv run poe format
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Make sure all checks pass before submitting your PR.
|
|
81
|
+
|
|
82
|
+
## Coding Standards
|
|
83
|
+
|
|
84
|
+
- Follow [PEP 8](https://pep8.org/) style guidelines (enforced by Ruff)
|
|
85
|
+
- Write clear, descriptive commit messages
|
|
86
|
+
- Add docstrings to all public functions and classes
|
|
87
|
+
- Keep functions focused and single-purpose
|
|
88
|
+
- Use type hints where appropriate
|
|
89
|
+
- Write self-documenting code with meaningful variable names
|
|
90
|
+
|
|
91
|
+
## Testing Guidelines
|
|
92
|
+
|
|
93
|
+
- Write tests for all new features and bug fixes
|
|
94
|
+
- Ensure existing tests still pass
|
|
95
|
+
- Aim for high test coverage on modified code
|
|
96
|
+
- Use descriptive test names that explain what is being tested
|
|
97
|
+
- Group related tests in the same test file
|
|
98
|
+
|
|
99
|
+
## Commit Message Guidelines
|
|
100
|
+
|
|
101
|
+
Write clear and descriptive commit messages:
|
|
102
|
+
|
|
103
|
+
- Use the imperative mood ("Add feature" not "Added feature")
|
|
104
|
+
- Keep the first line under 72 characters
|
|
105
|
+
- Reference issues and PRs where relevant
|
|
106
|
+
- Provide additional context in the body if needed
|
|
107
|
+
|
|
108
|
+
Example:
|
|
109
|
+
```
|
|
110
|
+
Add support for shallow clones with --depth option
|
|
111
|
+
|
|
112
|
+
Implements shallow clone functionality to reduce clone time
|
|
113
|
+
and disk space for large repositories.
|
|
114
|
+
|
|
115
|
+
Fixes #123
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
## Submitting a Pull Request
|
|
119
|
+
|
|
120
|
+
1. Push your changes to your fork:
|
|
121
|
+
```bash
|
|
122
|
+
git push origin feature/your-feature-name
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
2. Open a Pull Request on GitHub against the `main` branch
|
|
126
|
+
|
|
127
|
+
3. Fill out the PR template with:
|
|
128
|
+
- Clear description of the changes
|
|
129
|
+
- Motivation and context
|
|
130
|
+
- How the changes have been tested
|
|
131
|
+
- Any breaking changes or migration notes
|
|
132
|
+
- Related issue numbers
|
|
133
|
+
|
|
134
|
+
4. Wait for review and address any feedback
|
|
135
|
+
|
|
136
|
+
5. Once approved, a maintainer will merge your PR
|
|
137
|
+
|
|
138
|
+
## Pull Request Review Process
|
|
139
|
+
|
|
140
|
+
- All PRs require at least one review before merging
|
|
141
|
+
- CI checks must pass (tests, linting, formatting)
|
|
142
|
+
- Reviewers may request changes or clarifications
|
|
143
|
+
- Be responsive to feedback and questions
|
|
144
|
+
- Maintainers will merge once all requirements are met
|
|
145
|
+
|
|
146
|
+
## Reporting Bugs
|
|
147
|
+
|
|
148
|
+
If you find a bug, please open an issue on GitHub with:
|
|
149
|
+
|
|
150
|
+
- Clear, descriptive title
|
|
151
|
+
- Steps to reproduce the issue
|
|
152
|
+
- Expected behavior vs actual behavior
|
|
153
|
+
- Your environment (OS, Python version, git version)
|
|
154
|
+
- Any relevant error messages or logs
|
|
155
|
+
- Minimal reproduction example if possible
|
|
156
|
+
|
|
157
|
+
## Requesting Features
|
|
158
|
+
|
|
159
|
+
Feature requests are welcome! Please:
|
|
160
|
+
|
|
161
|
+
- Check existing issues to avoid duplicates
|
|
162
|
+
- Clearly describe the feature and its use case
|
|
163
|
+
- Explain why it would be useful to other users
|
|
164
|
+
- Consider submitting a PR if you can implement it
|
|
165
|
+
|
|
166
|
+
## Documentation
|
|
167
|
+
|
|
168
|
+
- Update documentation for any user-facing changes
|
|
169
|
+
- Add docstrings to new functions and classes
|
|
170
|
+
- Update README.md if adding new commands or features
|
|
171
|
+
- Include code examples where helpful
|
|
172
|
+
|
|
173
|
+
## Questions?
|
|
174
|
+
|
|
175
|
+
- Check existing documentation and issues first
|
|
176
|
+
- Open a GitHub issue for questions about contributing
|
|
177
|
+
- Be patient and respectful when asking for help
|
|
178
|
+
|
|
179
|
+
## License
|
|
180
|
+
|
|
181
|
+
By contributing to git-nested, you agree that your contributions will be licensed under the MIT License.
|
|
182
|
+
|
|
183
|
+
## Recognition
|
|
184
|
+
|
|
185
|
+
Contributors will be recognized in the project. Significant contributors may be added to the AUTHORS or CONTRIBUTORS file.
|
|
186
|
+
|
|
187
|
+
Thank you for contributing to git-nested!
|
git_nested-1.0.3/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
The MIT License (MIT)
|
|
2
|
+
|
|
3
|
+
Copyright 2026 - Thorsten Klein <thorsten.klein.git@gmail.com>
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
|
13
|
+
all copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
21
|
+
THE SOFTWARE.
|