Files
markitect-main/diary/2025-09-28_gitea-auto-detection-implementation.md
tegwick ad25b2a7d7
Some checks failed
Test Suite / unit-tests (3.11) (push) Has been cancelled
Test Suite / unit-tests (3.12) (push) Has been cancelled
Test Suite / integration-tests (push) Has been cancelled
Test Suite / e2e-tests (push) Has been cancelled
Test Suite / performance-tests (push) Has been cancelled
Test Suite / code-quality (push) Has been cancelled
Test Suite / security-scan (push) Has been cancelled
Test Suite / test-summary (push) Has been cancelled
feat: Implement automatic git repository configuration detection for Gitea
- Add GiteaConfig.from_git_repository() method for auto-detection
- Support HTTP(S) and SSH git remote URL formats
- Parse gitea_url, repo_owner, repo_name from git remote origin
- Only requires GITEA_API_TOKEN environment variable
- Update GiteaClient to use auto-detection as primary method
- Maintain backward compatibility with environment variables
- Fix issue creation API to use label IDs instead of names
- Add comprehensive error handling and validation
- Successfully tested with issues #33 and #34

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-28 23:27:13 +02:00

4.0 KiB

2025-09-28: Gitea Configuration Auto-Detection Implementation

Overview

Implemented automatic repository configuration detection for Gitea integration, eliminating the need for manual configuration of repository settings.

Problem Statement

The Gitea configuration previously required manual specification of:

  • gitea_url: Base Gitea server URL
  • repo_owner: Repository owner/organization name
  • repo_name: Repository name

This was redundant since we're always working within the git repository itself, and this information is already available from the git remote configuration.

Solution Implementation

1. New Auto-Detection Method

Added GiteaConfig.from_git_repository() method in gitea/config.py:88-145:

@classmethod
def from_git_repository(cls) -> "GiteaConfig":
    """Create config by auto-detecting from current git repository.

    Only requires GITEA_API_TOKEN environment variable.
    All other settings are detected from git remote origin.
    """

2. Git Remote URL Parsing

Supports multiple git URL formats:

  • HTTPS: https://gitea.example.com/owner/repo.git
  • HTTP: http://gitea.example.com/owner/repo.git
  • SSH: git@gitea.example.com:owner/repo.git

3. Configuration Simplification

Before: Required 4 environment variables

  • GITEA_URL
  • GITEA_REPO_OWNER
  • GITEA_REPO_NAME
  • GITEA_API_TOKEN

After: Requires only 1 environment variable

  • GITEA_API_TOKEN (everything else auto-detected)

4. Client Integration Update

Updated GiteaClient constructor in gitea/client.py:169-181 to:

  1. Attempt auto-detection first
  2. Fallback to environment variables if git detection fails
  3. Maintain backward compatibility

5. Removed Hardcoded Defaults

Cleaned up hardcoded configuration values in GiteaConfig class, making it truly dynamic.

Technical Details

Git Command Integration

Uses subprocess.run(['git', 'remote', 'get-url', 'origin']) to retrieve the remote URL, then parses it using:

  • urllib.parse.urlparse() for HTTP(S) URLs
  • String manipulation for SSH URLs
  • Comprehensive error handling for unsupported formats

Error Handling Strategy

  • Graceful fallback to environment-based configuration
  • Detailed error messages for parsing failures
  • Validation of extracted configuration values

Testing Verification

  • Successfully created test issues (#33, #34) using auto-detection
  • Verified functionality with current repository structure
  • All existing tests continue to pass (292 passed, 2 skipped)

Benefits

1. Developer Experience

  • Zero-configuration setup for repository-based workflows
  • Eliminates environment variable management complexity
  • Reduces setup documentation requirements

2. Reliability

  • Eliminates configuration drift between git state and manual settings
  • Automatic adaptation when repository URLs change
  • Consistent behavior across different development environments

3. Security

  • Only authentication token needs to be managed as secret
  • Repository metadata is derived from trusted git state
  • Reduces attack surface of configuration management

Validation Results

Test Issue Creation: Successfully created issues #33 and #34 to verify functionality Test Suite: 292 tests passed, confirming no regression in existing functionality Manual Verification: Confirmed auto-detection extracts correct values:

  • gitea_url: http://92.205.130.254:32166
  • repo_owner: coulomb
  • repo_name: markitect_project

Impact Assessment

Immediate Impact

  • Simplified development workflow setup
  • Reduced configuration management overhead
  • Enhanced developer onboarding experience

Future Considerations

  • Foundation for supporting multiple git forge platforms
  • Enables repository-portable configuration
  • Supports containerized development environments

Conclusion

The auto-detection implementation successfully eliminates manual repository configuration while maintaining full backward compatibility. This enhancement positions the Gitea integration for broader adoption and reduces barriers to entry for new developers.