1) Update README to contain basic build/run instructions. Remove legacy test advice.

2) Make the Unit Test insensitive to the git default branch name
This commit is contained in:
evalstate
2025-08-02 10:13:32 +01:00
parent 3a297d8432
commit 496e8eb28a
2 changed files with 27 additions and 34 deletions

View File

@@ -285,13 +285,29 @@ help you debug any issues.
## Development
If you are doing local development, there are two ways to test your changes:
### Building
1. Run the MCP inspector to test your changes. See [Debugging](#debugging) for run instructions.
[`uv`](https://docs.astral.sh/uv/) is used for development.
2. Test using the Claude desktop app. Add the following to your `claude_desktop_config.json`:
Start by creating a fresh virtual environment:
### Docker
```bash
uv venv
source .venv/bin/activate
```
To run the tests, type `uv run pytest`, to run the server from source use `uv run src/mcp_server_git/`.
To build, type `uv build`. You can then now run `mcp-server-git` command directly. Open with the inspector using `npx @modelcontextprotocol/inspector@latest mcp-server-git`.
To specify the Python version type `uv python pin <version>` (useful if you want to use a more recent version than the default).
To create the Docker container use
```bash
docker build -t mcp/git .
```
An example showing how to run via the Docker container is below:
```json
{
@@ -312,32 +328,6 @@ If you are doing local development, there are two ways to test your changes:
}
```
### UVX
```json
{
"mcpServers": {
"git": {
"command": "uv",
"args": [
"--directory",
"/<path to mcp-servers>/mcp-servers/src/git",
"run",
"mcp-server-git"
]
}
}
}
```
## Build
Docker build:
```bash
cd src/git
docker build -t mcp/git .
```
## License
This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.

View File

@@ -12,6 +12,9 @@ def test_repository(tmp_path: Path):
Path(repo_path / "test.txt").write_text("test")
test_repo.index.add(["test.txt"])
test_repo.index.commit("initial commit")
# Store the default branch name on the repo object for tests to use
test_repo.default_branch = test_repo.active_branch.name
yield test_repo
@@ -51,11 +54,11 @@ def test_git_branch_contains(test_repository):
Path(test_repository.working_dir / Path("feature.txt")).write_text("feature content")
test_repository.index.add(["feature.txt"])
commit = test_repository.index.commit("feature commit")
test_repository.git.checkout("master")
test_repository.git.checkout(test_repository.default_branch)
result = git_branch(test_repository, "local", contains=commit.hexsha)
assert "feature-branch" in result
assert "master" not in result
assert test_repository.default_branch not in result
def test_git_branch_not_contains(test_repository):
# Create a new branch and commit to it
@@ -63,8 +66,8 @@ def test_git_branch_not_contains(test_repository):
Path(test_repository.working_dir / Path("another_feature.txt")).write_text("another feature content")
test_repository.index.add(["another_feature.txt"])
commit = test_repository.index.commit("another feature commit")
test_repository.git.checkout("master")
test_repository.git.checkout(test_repository.default_branch)
result = git_branch(test_repository, "local", not_contains=commit.hexsha)
assert "another-feature-branch" not in result
assert "master" in result
assert test_repository.default_branch in result