https://github.com/iotsharp/extensions.configuration.gitrepository
Git repository configuration provider
https://github.com/iotsharp/extensions.configuration.gitrepository
asp-net-core configuration-provider git gitlab
Last synced: 8 months ago
JSON representation
Git repository configuration provider
- Host: GitHub
- URL: https://github.com/iotsharp/extensions.configuration.gitrepository
- Owner: IoTSharp
- License: mit
- Created: 2025-03-26T18:33:13.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2025-04-11T10:45:17.000Z (9 months ago)
- Last Synced: 2025-04-14T17:48:59.334Z (8 months ago)
- Topics: asp-net-core, configuration-provider, git, gitlab
- Language: C#
- Homepage:
- Size: 63.5 KB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
## IoTSharp/Extensions.Configuration.GitRepository
### Project Overview
**Git repository configuration provider** is a library designed for managing and loading configuration files, specifically for C# developers. It allows developers to read configuration files directly from a Git repository, enabling centralized configuration management and version control in distributed systems or microservice architectures.
[](https://ci.appveyor.com/project/MaiKeBing/extensions-configuration-gitrepository)
[](https://www.nuget.org/packages/Extensions.Configuration.GitRepository/)
[](https://github.com/IoTSharp/Extensions.Configuration.GitRepository/issues)

### Key Features
- **Load Configuration from Git Repositories**: Allows you to load configuration files from a specified Git repository, supporting various formats (such as JSON, YAML, etc.).
- **Version Control**: Leverage Git's powerful features to easily track changes to configuration files, ensuring traceability and version management.
- **Dynamic Refresh**: Supports dynamic refresh of configuration files, automatically updating configurations when files in the Git repository change.
- **Flexible Configuration Sources**: Supports loading configurations from multiple branches or tags, adapting to different environments (development, testing, production).
- **Security**: Access Git repositories via SSH or HTTPS, ensuring secure transmission and access control of configuration files.
### Use Cases
- **Distributed Systems**: Centrally manage and distribute configuration files in distributed systems, ensuring consistency and manageability across services.
- **Microservice Architecture**: Simplify configuration management in a microservice architecture by unifying configuration file management through a Git repository.
- **Dynamic Configuration Management**: Suitable for scenarios requiring dynamic configuration updates, such as applications with frequently changing configuration files.
- **Version Control**: Utilize Git's version control features to ensure traceability and change management in scenarios requiring strict version control.
### Installation and Usage
#### Installation
You can install this library via the NuGet package manager. Run the following command to install:
```shell
dotnet add package Extensions.Configuration.GitRepository
```
#### Example Code
Here is a simple example demonstrating how to use this library to load configuration files from a Git repository:
```csharp
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();
builder.Services.AddOpenApi();
builder.Configuration.AddUserSecrets("personal_access_tokens");
builder.Configuration.AddGitRepository(cfg => cfg.WithGitLab()
.WithHostUrl("https://git.uixe.net/")
.WithRepositoryPath("uixe/stdlanedevctlsvr")
.WithAuthenticationToken(builder.Configuration.GetValue("personal_access_tokens"))
.WithFileName($"{Environment.GetEnvironmentVariable("UIXEID")}/appsettings.{builder.Environment.EnvironmentName}.json")
.WithCache($"{builder.Environment.ContentRootPath}{System.IO.Path.DirectorySeparatorChar}appsettings.{builder.Environment.EnvironmentName}.json")
);
var app = builder.Build();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.MapOpenApi();
}
Console.WriteLine($"abc={app.Configuration.GetValue("abc")}");
app.UseAuthorization();
app.MapControllers();
app.Run();
}
```
### Contribution Guidelines
We welcome community contributions. You can contribute in the following ways:
- **Report Issues**: Report bugs or suggest features on the GitHub Issues page.
- **Submit PRs**: Fix bugs or add new features and submit your code through a Pull Request.
- **Improve Documentation**: Help improve the project's documentation to make it clearer and more understandable.
### License
This project is licensed under the MIT License. For details, please refer to the [LICENSE](https://github.com/IoTSharp/Extensions.Configuration.GitRepository/blob/main/LICENSE) file.
### Acknowledgments
Inspired by https://github.com/denis-ivanov/Extensions.Configuration.GitLab