gitwebhooks 2.1.0__tar.gz → 2.1.2__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.
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/PKG-INFO +44 -20
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/README.md +43 -19
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/README.zh.md +43 -19
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/gitwebhooks.egg-info/PKG-INFO +44 -20
- gitwebhooks-2.1.2/gitwebhooks.egg-info/entry_points.txt +2 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/pyproject.toml +2 -2
- gitwebhooks-2.1.0/gitwebhooks.egg-info/entry_points.txt +0 -2
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/.editorconfig +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/CLAUDE.md +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/LICENSE +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/MANIFEST.in +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/doc/custom-body.png +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/doc/custom-header.png +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/doc/custom-response.png +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/doc/gitee-success.png +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/doc/gitee.png +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/doc/github-success.png +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/doc/github.png +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/doc/gitlab-success.png +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/doc/gitlab.png +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/doc/install.png +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/doc/uninstall.png +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/git-webhooks-server.ini.sample +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/gitwebhooks/__init__.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/gitwebhooks/__main__.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/gitwebhooks/auth/__init__.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/gitwebhooks/auth/custom.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/gitwebhooks/auth/factory.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/gitwebhooks/auth/gitee.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/gitwebhooks/auth/github.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/gitwebhooks/auth/gitlab.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/gitwebhooks/auth/verifier.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/gitwebhooks/cli/__init__.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/gitwebhooks/cli/config.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/gitwebhooks/cli/init_wizard.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/gitwebhooks/cli/prompts.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/gitwebhooks/cli/service.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/gitwebhooks/config/__init__.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/gitwebhooks/config/loader.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/gitwebhooks/config/models.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/gitwebhooks/config/registry.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/gitwebhooks/config/server.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/gitwebhooks/handlers/__init__.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/gitwebhooks/handlers/base.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/gitwebhooks/handlers/custom.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/gitwebhooks/handlers/factory.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/gitwebhooks/handlers/gitee.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/gitwebhooks/handlers/github.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/gitwebhooks/handlers/gitlab.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/gitwebhooks/handlers/request.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/gitwebhooks/logging/__init__.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/gitwebhooks/logging/setup.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/gitwebhooks/main/__init__.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/gitwebhooks/main/__main__.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/gitwebhooks/models/__init__.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/gitwebhooks/models/provider.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/gitwebhooks/models/request.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/gitwebhooks/models/result.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/gitwebhooks/server.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/gitwebhooks/utils/__init__.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/gitwebhooks/utils/constants.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/gitwebhooks/utils/exceptions.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/gitwebhooks/utils/executor.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/gitwebhooks/utils/systemd.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/gitwebhooks.egg-info/SOURCES.txt +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/gitwebhooks.egg-info/dependency_links.txt +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/gitwebhooks.egg-info/requires.txt +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/gitwebhooks.egg-info/top_level.txt +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/setup.cfg +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/tests/__init__.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/tests/__main__.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/tests/conftest.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/tests/fixtures/__init__.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/tests/fixtures/custom_payloads.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/tests/fixtures/gitee_payloads.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/tests/fixtures/github_payloads.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/tests/fixtures/gitlab_payloads.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/tests/fixtures/signature_builder.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/tests/integration/__init__.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/tests/integration/test_command_execution.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/tests/integration/test_config_view_integration.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/tests/integration/test_custom_webhook.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/tests/integration/test_edge_cases.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/tests/integration/test_gitee_webhook.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/tests/integration/test_github_webhook.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/tests/integration/test_gitlab_webhook.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/tests/test_auth/__init__.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/tests/test_config/__init__.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/tests/test_handlers/__init__.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/tests/test_integration/__init__.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/tests/unit/__init__.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/tests/unit/cli/__init__.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/tests/unit/cli/test_config_view.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/tests/unit/cli/test_init_wizard.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/tests/unit/test_config_loading.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/tests/unit/test_data_parsing.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/tests/unit/test_provider_detection.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/tests/unit/test_request_handler.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/tests/unit/test_signature_verification.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/tests/utils/__init__.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/tests/utils/certificate_generator.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/tests/utils/coverage_runner.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/tests/utils/http_client.py +0 -0
- {gitwebhooks-2.1.0 → gitwebhooks-2.1.2}/tests/utils/server_manager.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: gitwebhooks
|
|
3
|
-
Version: 2.1.
|
|
3
|
+
Version: 2.1.2
|
|
4
4
|
Summary: A lightweight Git webhook server for automated deployment supporting GitHub, Gitee, GitLab, and custom webhooks
|
|
5
5
|
Author-email: Troy Tse <troy@holyhi.net>
|
|
6
6
|
Maintainer-email: Troy Tse <troy@holyhi.net>
|
|
@@ -95,15 +95,15 @@ gitwebhooks/
|
|
|
95
95
|
|
|
96
96
|
### Recommended: pipx (System-wide installation)
|
|
97
97
|
|
|
98
|
-
pipx is the recommended way to install
|
|
98
|
+
pipx is the recommended way to install gitwebhooks system-wide.
|
|
99
99
|
|
|
100
100
|
```bash
|
|
101
101
|
# Install pipx (if not already installed)
|
|
102
102
|
sudo apt install pipx # Ubuntu/Debian
|
|
103
103
|
# or: python3 -m pip install --user pipx
|
|
104
104
|
|
|
105
|
-
# Install
|
|
106
|
-
pipx install
|
|
105
|
+
# Install gitwebhooks
|
|
106
|
+
pipx install gitwebhooks
|
|
107
107
|
```
|
|
108
108
|
|
|
109
109
|
**Why pipx?**
|
|
@@ -122,7 +122,7 @@ python3 -m venv ~/venv/gitwebhooks
|
|
|
122
122
|
|
|
123
123
|
# Activate and install
|
|
124
124
|
source ~/venv/gitwebhooks/bin/activate
|
|
125
|
-
pip install
|
|
125
|
+
pip install gitwebhooks
|
|
126
126
|
|
|
127
127
|
# Add to PATH (optional)
|
|
128
128
|
echo 'export PATH="$HOME/venv/gitwebhooks/bin:$PATH"' >> ~/.bashrc
|
|
@@ -135,7 +135,7 @@ source ~/.bashrc
|
|
|
135
135
|
|
|
136
136
|
```bash
|
|
137
137
|
# DO NOT DO THIS
|
|
138
|
-
sudo pip install
|
|
138
|
+
sudo pip install gitwebhooks
|
|
139
139
|
```
|
|
140
140
|
|
|
141
141
|
**Risks**:
|
|
@@ -213,13 +213,13 @@ gitwebhooks-cli --help
|
|
|
213
213
|
|
|
214
214
|
## Migrating from System pip Installation
|
|
215
215
|
|
|
216
|
-
If you previously installed
|
|
216
|
+
If you previously installed gitwebhooks using `sudo pip install`,
|
|
217
217
|
follow these steps to migrate to a recommended installation method.
|
|
218
218
|
|
|
219
219
|
### Step 1: Uninstall the old installation
|
|
220
220
|
|
|
221
221
|
```bash
|
|
222
|
-
sudo pip uninstall
|
|
222
|
+
sudo pip uninstall gitwebhooks
|
|
223
223
|
```
|
|
224
224
|
|
|
225
225
|
### Step 2: Backup your configuration (if exists)
|
|
@@ -231,8 +231,8 @@ cp ~/.gitwebhook.ini ~/.gitwebhook.ini.backup
|
|
|
231
231
|
### Step 3: Stop and uninstall the service (if installed)
|
|
232
232
|
|
|
233
233
|
```bash
|
|
234
|
-
sudo systemctl stop
|
|
235
|
-
sudo systemctl disable
|
|
234
|
+
sudo systemctl stop gitwebhooks
|
|
235
|
+
sudo systemctl disable gitwebhooks
|
|
236
236
|
sudo gitwebhooks-cli service uninstall
|
|
237
237
|
```
|
|
238
238
|
|
|
@@ -244,8 +244,8 @@ Choose **pipx** (recommended):
|
|
|
244
244
|
sudo apt install pipx # Ubuntu/Debian
|
|
245
245
|
# or: python3 -m pip install --user pipx
|
|
246
246
|
|
|
247
|
-
# Install
|
|
248
|
-
pipx install
|
|
247
|
+
# Install gitwebhooks
|
|
248
|
+
pipx install gitwebhooks
|
|
249
249
|
```
|
|
250
250
|
|
|
251
251
|
Or **venv**:
|
|
@@ -254,8 +254,8 @@ Or **venv**:
|
|
|
254
254
|
python3 -m venv ~/venv/gitwebhooks
|
|
255
255
|
source ~/venv/gitwebhooks/bin/activate
|
|
256
256
|
|
|
257
|
-
# Install
|
|
258
|
-
pip install
|
|
257
|
+
# Install gitwebhooks
|
|
258
|
+
pip install gitwebhooks
|
|
259
259
|
```
|
|
260
260
|
|
|
261
261
|
### Step 5: Restore configuration (if backed up)
|
|
@@ -276,7 +276,7 @@ sudo gitwebhooks-cli service install
|
|
|
276
276
|
### Step 7: Verify
|
|
277
277
|
|
|
278
278
|
```bash
|
|
279
|
-
sudo systemctl status
|
|
279
|
+
sudo systemctl status gitwebhooks
|
|
280
280
|
```
|
|
281
281
|
|
|
282
282
|
## Uninstallation
|
|
@@ -305,7 +305,7 @@ cmd=git fetch --all && git reset --hard origin/master && git pull
|
|
|
305
305
|
|
|
306
306
|
```bash
|
|
307
307
|
# If running as a service
|
|
308
|
-
systemctl restart
|
|
308
|
+
systemctl restart gitwebhooks
|
|
309
309
|
|
|
310
310
|
# Or run directly:
|
|
311
311
|
gitwebhooks-cli
|
|
@@ -449,7 +449,7 @@ cmd=your_command # Command to execute
|
|
|
449
449
|
## Project Structure
|
|
450
450
|
|
|
451
451
|
```
|
|
452
|
-
|
|
452
|
+
gitwebhooks/
|
|
453
453
|
├── gitwebhooks/ # Python package (modular v2.0)
|
|
454
454
|
│ ├── __init__.py
|
|
455
455
|
│ ├── __main__.py
|
|
@@ -463,7 +463,7 @@ git-webhooks-server/
|
|
|
463
463
|
│ └── logging/ # Logging setup
|
|
464
464
|
├── gitwebhooks-cli # CLI wrapper script
|
|
465
465
|
├── install.sh # Installation script
|
|
466
|
-
├──
|
|
466
|
+
├── gitwebhooks.ini.sample
|
|
467
467
|
└── tests/ # Test suite
|
|
468
468
|
```
|
|
469
469
|
|
|
@@ -473,10 +473,10 @@ git-webhooks-server/
|
|
|
473
473
|
|
|
474
474
|
```bash
|
|
475
475
|
# Method 1: Use CLI tool (recommended)
|
|
476
|
-
./gitwebhooks-cli -c
|
|
476
|
+
./gitwebhooks-cli -c gitwebhooks.ini.sample
|
|
477
477
|
|
|
478
478
|
# Method 2: Use module entry
|
|
479
|
-
python3 -m gitwebhooks.cli -c
|
|
479
|
+
python3 -m gitwebhooks.cli -c gitwebhooks.ini.sample
|
|
480
480
|
```
|
|
481
481
|
|
|
482
482
|
### Running Tests
|
|
@@ -489,6 +489,30 @@ python3 -m pytest tests/
|
|
|
489
489
|
python3 -m unittest discover tests/
|
|
490
490
|
```
|
|
491
491
|
|
|
492
|
+
### Releasing to PyPI
|
|
493
|
+
|
|
494
|
+
**IMPORTANT**: Before releasing to PyPI, you MUST run the pre-release validation script:
|
|
495
|
+
|
|
496
|
+
```bash
|
|
497
|
+
./scripts/pre-release-check.sh
|
|
498
|
+
```
|
|
499
|
+
|
|
500
|
+
This script validates:
|
|
501
|
+
- Package builds successfully
|
|
502
|
+
- CLI entry point works (`gitwebhooks-cli`)
|
|
503
|
+
- All subcommands work (`service`, `config`)
|
|
504
|
+
- Module imports work correctly
|
|
505
|
+
|
|
506
|
+
Only after all checks pass, proceed with publishing:
|
|
507
|
+
|
|
508
|
+
```bash
|
|
509
|
+
# Build the package
|
|
510
|
+
python3 -m build
|
|
511
|
+
|
|
512
|
+
# Upload to PyPI
|
|
513
|
+
python3 -m twine upload dist/*
|
|
514
|
+
```
|
|
515
|
+
|
|
492
516
|
## License
|
|
493
517
|
|
|
494
518
|
MIT License
|
|
@@ -55,15 +55,15 @@ gitwebhooks/
|
|
|
55
55
|
|
|
56
56
|
### Recommended: pipx (System-wide installation)
|
|
57
57
|
|
|
58
|
-
pipx is the recommended way to install
|
|
58
|
+
pipx is the recommended way to install gitwebhooks system-wide.
|
|
59
59
|
|
|
60
60
|
```bash
|
|
61
61
|
# Install pipx (if not already installed)
|
|
62
62
|
sudo apt install pipx # Ubuntu/Debian
|
|
63
63
|
# or: python3 -m pip install --user pipx
|
|
64
64
|
|
|
65
|
-
# Install
|
|
66
|
-
pipx install
|
|
65
|
+
# Install gitwebhooks
|
|
66
|
+
pipx install gitwebhooks
|
|
67
67
|
```
|
|
68
68
|
|
|
69
69
|
**Why pipx?**
|
|
@@ -82,7 +82,7 @@ python3 -m venv ~/venv/gitwebhooks
|
|
|
82
82
|
|
|
83
83
|
# Activate and install
|
|
84
84
|
source ~/venv/gitwebhooks/bin/activate
|
|
85
|
-
pip install
|
|
85
|
+
pip install gitwebhooks
|
|
86
86
|
|
|
87
87
|
# Add to PATH (optional)
|
|
88
88
|
echo 'export PATH="$HOME/venv/gitwebhooks/bin:$PATH"' >> ~/.bashrc
|
|
@@ -95,7 +95,7 @@ source ~/.bashrc
|
|
|
95
95
|
|
|
96
96
|
```bash
|
|
97
97
|
# DO NOT DO THIS
|
|
98
|
-
sudo pip install
|
|
98
|
+
sudo pip install gitwebhooks
|
|
99
99
|
```
|
|
100
100
|
|
|
101
101
|
**Risks**:
|
|
@@ -173,13 +173,13 @@ gitwebhooks-cli --help
|
|
|
173
173
|
|
|
174
174
|
## Migrating from System pip Installation
|
|
175
175
|
|
|
176
|
-
If you previously installed
|
|
176
|
+
If you previously installed gitwebhooks using `sudo pip install`,
|
|
177
177
|
follow these steps to migrate to a recommended installation method.
|
|
178
178
|
|
|
179
179
|
### Step 1: Uninstall the old installation
|
|
180
180
|
|
|
181
181
|
```bash
|
|
182
|
-
sudo pip uninstall
|
|
182
|
+
sudo pip uninstall gitwebhooks
|
|
183
183
|
```
|
|
184
184
|
|
|
185
185
|
### Step 2: Backup your configuration (if exists)
|
|
@@ -191,8 +191,8 @@ cp ~/.gitwebhook.ini ~/.gitwebhook.ini.backup
|
|
|
191
191
|
### Step 3: Stop and uninstall the service (if installed)
|
|
192
192
|
|
|
193
193
|
```bash
|
|
194
|
-
sudo systemctl stop
|
|
195
|
-
sudo systemctl disable
|
|
194
|
+
sudo systemctl stop gitwebhooks
|
|
195
|
+
sudo systemctl disable gitwebhooks
|
|
196
196
|
sudo gitwebhooks-cli service uninstall
|
|
197
197
|
```
|
|
198
198
|
|
|
@@ -204,8 +204,8 @@ Choose **pipx** (recommended):
|
|
|
204
204
|
sudo apt install pipx # Ubuntu/Debian
|
|
205
205
|
# or: python3 -m pip install --user pipx
|
|
206
206
|
|
|
207
|
-
# Install
|
|
208
|
-
pipx install
|
|
207
|
+
# Install gitwebhooks
|
|
208
|
+
pipx install gitwebhooks
|
|
209
209
|
```
|
|
210
210
|
|
|
211
211
|
Or **venv**:
|
|
@@ -214,8 +214,8 @@ Or **venv**:
|
|
|
214
214
|
python3 -m venv ~/venv/gitwebhooks
|
|
215
215
|
source ~/venv/gitwebhooks/bin/activate
|
|
216
216
|
|
|
217
|
-
# Install
|
|
218
|
-
pip install
|
|
217
|
+
# Install gitwebhooks
|
|
218
|
+
pip install gitwebhooks
|
|
219
219
|
```
|
|
220
220
|
|
|
221
221
|
### Step 5: Restore configuration (if backed up)
|
|
@@ -236,7 +236,7 @@ sudo gitwebhooks-cli service install
|
|
|
236
236
|
### Step 7: Verify
|
|
237
237
|
|
|
238
238
|
```bash
|
|
239
|
-
sudo systemctl status
|
|
239
|
+
sudo systemctl status gitwebhooks
|
|
240
240
|
```
|
|
241
241
|
|
|
242
242
|
## Uninstallation
|
|
@@ -265,7 +265,7 @@ cmd=git fetch --all && git reset --hard origin/master && git pull
|
|
|
265
265
|
|
|
266
266
|
```bash
|
|
267
267
|
# If running as a service
|
|
268
|
-
systemctl restart
|
|
268
|
+
systemctl restart gitwebhooks
|
|
269
269
|
|
|
270
270
|
# Or run directly:
|
|
271
271
|
gitwebhooks-cli
|
|
@@ -409,7 +409,7 @@ cmd=your_command # Command to execute
|
|
|
409
409
|
## Project Structure
|
|
410
410
|
|
|
411
411
|
```
|
|
412
|
-
|
|
412
|
+
gitwebhooks/
|
|
413
413
|
├── gitwebhooks/ # Python package (modular v2.0)
|
|
414
414
|
│ ├── __init__.py
|
|
415
415
|
│ ├── __main__.py
|
|
@@ -423,7 +423,7 @@ git-webhooks-server/
|
|
|
423
423
|
│ └── logging/ # Logging setup
|
|
424
424
|
├── gitwebhooks-cli # CLI wrapper script
|
|
425
425
|
├── install.sh # Installation script
|
|
426
|
-
├──
|
|
426
|
+
├── gitwebhooks.ini.sample
|
|
427
427
|
└── tests/ # Test suite
|
|
428
428
|
```
|
|
429
429
|
|
|
@@ -433,10 +433,10 @@ git-webhooks-server/
|
|
|
433
433
|
|
|
434
434
|
```bash
|
|
435
435
|
# Method 1: Use CLI tool (recommended)
|
|
436
|
-
./gitwebhooks-cli -c
|
|
436
|
+
./gitwebhooks-cli -c gitwebhooks.ini.sample
|
|
437
437
|
|
|
438
438
|
# Method 2: Use module entry
|
|
439
|
-
python3 -m gitwebhooks.cli -c
|
|
439
|
+
python3 -m gitwebhooks.cli -c gitwebhooks.ini.sample
|
|
440
440
|
```
|
|
441
441
|
|
|
442
442
|
### Running Tests
|
|
@@ -449,6 +449,30 @@ python3 -m pytest tests/
|
|
|
449
449
|
python3 -m unittest discover tests/
|
|
450
450
|
```
|
|
451
451
|
|
|
452
|
+
### Releasing to PyPI
|
|
453
|
+
|
|
454
|
+
**IMPORTANT**: Before releasing to PyPI, you MUST run the pre-release validation script:
|
|
455
|
+
|
|
456
|
+
```bash
|
|
457
|
+
./scripts/pre-release-check.sh
|
|
458
|
+
```
|
|
459
|
+
|
|
460
|
+
This script validates:
|
|
461
|
+
- Package builds successfully
|
|
462
|
+
- CLI entry point works (`gitwebhooks-cli`)
|
|
463
|
+
- All subcommands work (`service`, `config`)
|
|
464
|
+
- Module imports work correctly
|
|
465
|
+
|
|
466
|
+
Only after all checks pass, proceed with publishing:
|
|
467
|
+
|
|
468
|
+
```bash
|
|
469
|
+
# Build the package
|
|
470
|
+
python3 -m build
|
|
471
|
+
|
|
472
|
+
# Upload to PyPI
|
|
473
|
+
python3 -m twine upload dist/*
|
|
474
|
+
```
|
|
475
|
+
|
|
452
476
|
## License
|
|
453
477
|
|
|
454
478
|
MIT License
|
|
@@ -55,15 +55,15 @@ gitwebhooks/
|
|
|
55
55
|
|
|
56
56
|
### 推荐:pipx(系统级安装)
|
|
57
57
|
|
|
58
|
-
pipx 是安装
|
|
58
|
+
pipx 是安装 gitwebhooks 的推荐方式。
|
|
59
59
|
|
|
60
60
|
```bash
|
|
61
61
|
# 安装 pipx(如果尚未安装)
|
|
62
62
|
sudo apt install pipx # Ubuntu/Debian
|
|
63
63
|
# 或: python3 -m pip install --user pipx
|
|
64
64
|
|
|
65
|
-
# 安装
|
|
66
|
-
pipx install
|
|
65
|
+
# 安装 gitwebhooks
|
|
66
|
+
pipx install gitwebhooks
|
|
67
67
|
```
|
|
68
68
|
|
|
69
69
|
**为什么选择 pipx?**
|
|
@@ -82,7 +82,7 @@ python3 -m venv ~/venv/gitwebhooks
|
|
|
82
82
|
|
|
83
83
|
# 激活并安装
|
|
84
84
|
source ~/venv/gitwebhooks/bin/activate
|
|
85
|
-
pip install
|
|
85
|
+
pip install gitwebhooks
|
|
86
86
|
|
|
87
87
|
# 添加到 PATH(可选)
|
|
88
88
|
echo 'export PATH="$HOME/venv/gitwebhooks/bin:$PATH"' >> ~/.bashrc
|
|
@@ -95,7 +95,7 @@ source ~/.bashrc
|
|
|
95
95
|
|
|
96
96
|
```bash
|
|
97
97
|
# 不要这样做
|
|
98
|
-
sudo pip install
|
|
98
|
+
sudo pip install gitwebhooks
|
|
99
99
|
```
|
|
100
100
|
|
|
101
101
|
**风险**:
|
|
@@ -173,13 +173,13 @@ gitwebhooks-cli --help
|
|
|
173
173
|
|
|
174
174
|
## 从系统 pip 安装迁移
|
|
175
175
|
|
|
176
|
-
如果您之前使用 `sudo pip install` 安装了
|
|
176
|
+
如果您之前使用 `sudo pip install` 安装了 gitwebhooks,
|
|
177
177
|
请按照以下步骤迁移到推荐的安装方式。
|
|
178
178
|
|
|
179
179
|
### 步骤 1:卸载旧安装
|
|
180
180
|
|
|
181
181
|
```bash
|
|
182
|
-
sudo pip uninstall
|
|
182
|
+
sudo pip uninstall gitwebhooks
|
|
183
183
|
```
|
|
184
184
|
|
|
185
185
|
### 步骤 2:备份配置(如果存在)
|
|
@@ -191,8 +191,8 @@ cp ~/.gitwebhook.ini ~/.gitwebhook.ini.backup
|
|
|
191
191
|
### 步骤 3:停止并卸载服务(如果已安装)
|
|
192
192
|
|
|
193
193
|
```bash
|
|
194
|
-
sudo systemctl stop
|
|
195
|
-
sudo systemctl disable
|
|
194
|
+
sudo systemctl stop gitwebhooks
|
|
195
|
+
sudo systemctl disable gitwebhooks
|
|
196
196
|
sudo gitwebhooks-cli service uninstall
|
|
197
197
|
```
|
|
198
198
|
|
|
@@ -204,8 +204,8 @@ sudo gitwebhooks-cli service uninstall
|
|
|
204
204
|
sudo apt install pipx # Ubuntu/Debian
|
|
205
205
|
# 或: python3 -m pip install --user pipx
|
|
206
206
|
|
|
207
|
-
# 安装
|
|
208
|
-
pipx install
|
|
207
|
+
# 安装 gitwebhooks
|
|
208
|
+
pipx install gitwebhooks
|
|
209
209
|
```
|
|
210
210
|
|
|
211
211
|
或 **venv**:
|
|
@@ -214,8 +214,8 @@ pipx install git-webhooks-server
|
|
|
214
214
|
python3 -m venv ~/venv/gitwebhooks
|
|
215
215
|
source ~/venv/gitwebhooks/bin/activate
|
|
216
216
|
|
|
217
|
-
# 安装
|
|
218
|
-
pip install
|
|
217
|
+
# 安装 gitwebhooks
|
|
218
|
+
pip install gitwebhooks
|
|
219
219
|
```
|
|
220
220
|
|
|
221
221
|
### 步骤 5:恢复配置(如果已备份)
|
|
@@ -236,7 +236,7 @@ sudo gitwebhooks-cli service install
|
|
|
236
236
|
### 步骤 7:验证
|
|
237
237
|
|
|
238
238
|
```bash
|
|
239
|
-
sudo systemctl status
|
|
239
|
+
sudo systemctl status gitwebhooks
|
|
240
240
|
```
|
|
241
241
|
|
|
242
242
|
## 卸载
|
|
@@ -265,7 +265,7 @@ cmd=git fetch --all && git reset --hard origin/master && git pull
|
|
|
265
265
|
|
|
266
266
|
```bash
|
|
267
267
|
# 如果作为服务运行
|
|
268
|
-
systemctl restart
|
|
268
|
+
systemctl restart gitwebhooks
|
|
269
269
|
|
|
270
270
|
# 或直接运行:
|
|
271
271
|
gitwebhooks-cli
|
|
@@ -409,7 +409,7 @@ cmd=your_command # 要执行的命令
|
|
|
409
409
|
## 项目结构
|
|
410
410
|
|
|
411
411
|
```
|
|
412
|
-
|
|
412
|
+
gitwebhooks/
|
|
413
413
|
├── gitwebhooks/ # Python 包(模块化 v2.0)
|
|
414
414
|
│ ├── __init__.py
|
|
415
415
|
│ ├── __main__.py
|
|
@@ -423,7 +423,7 @@ git-webhooks-server/
|
|
|
423
423
|
│ └── logging/ # 日志配置
|
|
424
424
|
├── gitwebhooks-cli # CLI 包装脚本
|
|
425
425
|
├── install.sh # 安装脚本
|
|
426
|
-
├──
|
|
426
|
+
├── gitwebhooks.ini.sample
|
|
427
427
|
└── tests/ # 测试套件
|
|
428
428
|
```
|
|
429
429
|
|
|
@@ -433,10 +433,10 @@ git-webhooks-server/
|
|
|
433
433
|
|
|
434
434
|
```bash
|
|
435
435
|
# 方式1: 使用 CLI 工具(推荐)
|
|
436
|
-
./gitwebhooks-cli -c
|
|
436
|
+
./gitwebhooks-cli -c gitwebhooks.ini.sample
|
|
437
437
|
|
|
438
438
|
# 方式2: 使用模块入口
|
|
439
|
-
python3 -m gitwebhooks.cli -c
|
|
439
|
+
python3 -m gitwebhooks.cli -c gitwebhooks.ini.sample
|
|
440
440
|
```
|
|
441
441
|
|
|
442
442
|
### 运行测试
|
|
@@ -449,6 +449,30 @@ python3 -m pytest tests/
|
|
|
449
449
|
python3 -m unittest discover tests/
|
|
450
450
|
```
|
|
451
451
|
|
|
452
|
+
### 发布到 PyPI
|
|
453
|
+
|
|
454
|
+
**重要提示**:发布到 PyPI 前,必须运行发布前验证脚本:
|
|
455
|
+
|
|
456
|
+
```bash
|
|
457
|
+
./scripts/pre-release-check.sh
|
|
458
|
+
```
|
|
459
|
+
|
|
460
|
+
此脚本会验证:
|
|
461
|
+
- 包能成功构建
|
|
462
|
+
- CLI 入口点正常工作(`gitwebhooks-cli`)
|
|
463
|
+
- 所有子命令正常工作(`service`、`config`)
|
|
464
|
+
- 模块导入正常工作
|
|
465
|
+
|
|
466
|
+
只有在所有检查通过后,才能进行发布:
|
|
467
|
+
|
|
468
|
+
```bash
|
|
469
|
+
# 构建包
|
|
470
|
+
python3 -m build
|
|
471
|
+
|
|
472
|
+
# 上传到 PyPI
|
|
473
|
+
python3 -m twine upload dist/*
|
|
474
|
+
```
|
|
475
|
+
|
|
452
476
|
## 许可证
|
|
453
477
|
|
|
454
478
|
MIT License
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: gitwebhooks
|
|
3
|
-
Version: 2.1.
|
|
3
|
+
Version: 2.1.2
|
|
4
4
|
Summary: A lightweight Git webhook server for automated deployment supporting GitHub, Gitee, GitLab, and custom webhooks
|
|
5
5
|
Author-email: Troy Tse <troy@holyhi.net>
|
|
6
6
|
Maintainer-email: Troy Tse <troy@holyhi.net>
|
|
@@ -95,15 +95,15 @@ gitwebhooks/
|
|
|
95
95
|
|
|
96
96
|
### Recommended: pipx (System-wide installation)
|
|
97
97
|
|
|
98
|
-
pipx is the recommended way to install
|
|
98
|
+
pipx is the recommended way to install gitwebhooks system-wide.
|
|
99
99
|
|
|
100
100
|
```bash
|
|
101
101
|
# Install pipx (if not already installed)
|
|
102
102
|
sudo apt install pipx # Ubuntu/Debian
|
|
103
103
|
# or: python3 -m pip install --user pipx
|
|
104
104
|
|
|
105
|
-
# Install
|
|
106
|
-
pipx install
|
|
105
|
+
# Install gitwebhooks
|
|
106
|
+
pipx install gitwebhooks
|
|
107
107
|
```
|
|
108
108
|
|
|
109
109
|
**Why pipx?**
|
|
@@ -122,7 +122,7 @@ python3 -m venv ~/venv/gitwebhooks
|
|
|
122
122
|
|
|
123
123
|
# Activate and install
|
|
124
124
|
source ~/venv/gitwebhooks/bin/activate
|
|
125
|
-
pip install
|
|
125
|
+
pip install gitwebhooks
|
|
126
126
|
|
|
127
127
|
# Add to PATH (optional)
|
|
128
128
|
echo 'export PATH="$HOME/venv/gitwebhooks/bin:$PATH"' >> ~/.bashrc
|
|
@@ -135,7 +135,7 @@ source ~/.bashrc
|
|
|
135
135
|
|
|
136
136
|
```bash
|
|
137
137
|
# DO NOT DO THIS
|
|
138
|
-
sudo pip install
|
|
138
|
+
sudo pip install gitwebhooks
|
|
139
139
|
```
|
|
140
140
|
|
|
141
141
|
**Risks**:
|
|
@@ -213,13 +213,13 @@ gitwebhooks-cli --help
|
|
|
213
213
|
|
|
214
214
|
## Migrating from System pip Installation
|
|
215
215
|
|
|
216
|
-
If you previously installed
|
|
216
|
+
If you previously installed gitwebhooks using `sudo pip install`,
|
|
217
217
|
follow these steps to migrate to a recommended installation method.
|
|
218
218
|
|
|
219
219
|
### Step 1: Uninstall the old installation
|
|
220
220
|
|
|
221
221
|
```bash
|
|
222
|
-
sudo pip uninstall
|
|
222
|
+
sudo pip uninstall gitwebhooks
|
|
223
223
|
```
|
|
224
224
|
|
|
225
225
|
### Step 2: Backup your configuration (if exists)
|
|
@@ -231,8 +231,8 @@ cp ~/.gitwebhook.ini ~/.gitwebhook.ini.backup
|
|
|
231
231
|
### Step 3: Stop and uninstall the service (if installed)
|
|
232
232
|
|
|
233
233
|
```bash
|
|
234
|
-
sudo systemctl stop
|
|
235
|
-
sudo systemctl disable
|
|
234
|
+
sudo systemctl stop gitwebhooks
|
|
235
|
+
sudo systemctl disable gitwebhooks
|
|
236
236
|
sudo gitwebhooks-cli service uninstall
|
|
237
237
|
```
|
|
238
238
|
|
|
@@ -244,8 +244,8 @@ Choose **pipx** (recommended):
|
|
|
244
244
|
sudo apt install pipx # Ubuntu/Debian
|
|
245
245
|
# or: python3 -m pip install --user pipx
|
|
246
246
|
|
|
247
|
-
# Install
|
|
248
|
-
pipx install
|
|
247
|
+
# Install gitwebhooks
|
|
248
|
+
pipx install gitwebhooks
|
|
249
249
|
```
|
|
250
250
|
|
|
251
251
|
Or **venv**:
|
|
@@ -254,8 +254,8 @@ Or **venv**:
|
|
|
254
254
|
python3 -m venv ~/venv/gitwebhooks
|
|
255
255
|
source ~/venv/gitwebhooks/bin/activate
|
|
256
256
|
|
|
257
|
-
# Install
|
|
258
|
-
pip install
|
|
257
|
+
# Install gitwebhooks
|
|
258
|
+
pip install gitwebhooks
|
|
259
259
|
```
|
|
260
260
|
|
|
261
261
|
### Step 5: Restore configuration (if backed up)
|
|
@@ -276,7 +276,7 @@ sudo gitwebhooks-cli service install
|
|
|
276
276
|
### Step 7: Verify
|
|
277
277
|
|
|
278
278
|
```bash
|
|
279
|
-
sudo systemctl status
|
|
279
|
+
sudo systemctl status gitwebhooks
|
|
280
280
|
```
|
|
281
281
|
|
|
282
282
|
## Uninstallation
|
|
@@ -305,7 +305,7 @@ cmd=git fetch --all && git reset --hard origin/master && git pull
|
|
|
305
305
|
|
|
306
306
|
```bash
|
|
307
307
|
# If running as a service
|
|
308
|
-
systemctl restart
|
|
308
|
+
systemctl restart gitwebhooks
|
|
309
309
|
|
|
310
310
|
# Or run directly:
|
|
311
311
|
gitwebhooks-cli
|
|
@@ -449,7 +449,7 @@ cmd=your_command # Command to execute
|
|
|
449
449
|
## Project Structure
|
|
450
450
|
|
|
451
451
|
```
|
|
452
|
-
|
|
452
|
+
gitwebhooks/
|
|
453
453
|
├── gitwebhooks/ # Python package (modular v2.0)
|
|
454
454
|
│ ├── __init__.py
|
|
455
455
|
│ ├── __main__.py
|
|
@@ -463,7 +463,7 @@ git-webhooks-server/
|
|
|
463
463
|
│ └── logging/ # Logging setup
|
|
464
464
|
├── gitwebhooks-cli # CLI wrapper script
|
|
465
465
|
├── install.sh # Installation script
|
|
466
|
-
├──
|
|
466
|
+
├── gitwebhooks.ini.sample
|
|
467
467
|
└── tests/ # Test suite
|
|
468
468
|
```
|
|
469
469
|
|
|
@@ -473,10 +473,10 @@ git-webhooks-server/
|
|
|
473
473
|
|
|
474
474
|
```bash
|
|
475
475
|
# Method 1: Use CLI tool (recommended)
|
|
476
|
-
./gitwebhooks-cli -c
|
|
476
|
+
./gitwebhooks-cli -c gitwebhooks.ini.sample
|
|
477
477
|
|
|
478
478
|
# Method 2: Use module entry
|
|
479
|
-
python3 -m gitwebhooks.cli -c
|
|
479
|
+
python3 -m gitwebhooks.cli -c gitwebhooks.ini.sample
|
|
480
480
|
```
|
|
481
481
|
|
|
482
482
|
### Running Tests
|
|
@@ -489,6 +489,30 @@ python3 -m pytest tests/
|
|
|
489
489
|
python3 -m unittest discover tests/
|
|
490
490
|
```
|
|
491
491
|
|
|
492
|
+
### Releasing to PyPI
|
|
493
|
+
|
|
494
|
+
**IMPORTANT**: Before releasing to PyPI, you MUST run the pre-release validation script:
|
|
495
|
+
|
|
496
|
+
```bash
|
|
497
|
+
./scripts/pre-release-check.sh
|
|
498
|
+
```
|
|
499
|
+
|
|
500
|
+
This script validates:
|
|
501
|
+
- Package builds successfully
|
|
502
|
+
- CLI entry point works (`gitwebhooks-cli`)
|
|
503
|
+
- All subcommands work (`service`, `config`)
|
|
504
|
+
- Module imports work correctly
|
|
505
|
+
|
|
506
|
+
Only after all checks pass, proceed with publishing:
|
|
507
|
+
|
|
508
|
+
```bash
|
|
509
|
+
# Build the package
|
|
510
|
+
python3 -m build
|
|
511
|
+
|
|
512
|
+
# Upload to PyPI
|
|
513
|
+
python3 -m twine upload dist/*
|
|
514
|
+
```
|
|
515
|
+
|
|
492
516
|
## License
|
|
493
517
|
|
|
494
518
|
MIT License
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "gitwebhooks"
|
|
7
|
-
version = "2.1.
|
|
7
|
+
version = "2.1.2"
|
|
8
8
|
description = "A lightweight Git webhook server for automated deployment supporting GitHub, Gitee, GitLab, and custom webhooks"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "MIT"
|
|
@@ -64,7 +64,7 @@ Repository = "https://github.com/troytse/git-webhooks-server.git"
|
|
|
64
64
|
Issues = "https://github.com/troytse/git-webhooks-server/issues"
|
|
65
65
|
|
|
66
66
|
[project.scripts]
|
|
67
|
-
gitwebhooks-cli = "gitwebhooks.
|
|
67
|
+
gitwebhooks-cli = "gitwebhooks.main:main"
|
|
68
68
|
|
|
69
69
|
[tool.setuptools]
|
|
70
70
|
package-dir = {"" = "."}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|