---
title: Charmhub | Deploy Git Integrator using Charmhub - The Open Operator Collection
description: Deploy the latest version of Git Integrator on any cloud.
url: https://charmhub.io/git-integrator/libraries/git
---

# Git Integrator

[Workflows Charmers](https://charmhub.io/publisher/workflows-charmers "View all packages from Workflows Charmers")

* [Workflows Charmers](https://charmhub.io/publisher/workflows-charmers "View all packages from Workflows Charmers")

Platform:

24.04

1.0/edge 7

```
juju deploy git-integrator --channel 1.0/edge
```

[Learn to deploy on juju >](https://juju.is/docs/juju/manage-applications)

[Toggle side navigation](https://charmhub.io/git-integrator/libraries/git#drawer)

## charms.git\_integrator.v0.git

* [*Docstrings*Docstrings](https://charmhub.io/git-integrator/libraries/git)
  [*Code*Source code](https://charmhub.io/git-integrator/libraries/git/source-code)
* + Download

    Fetch library

    ```
    charmcraft fetch-lib charms.git_integrator.v0.git
    ```

    [Download git.py](https://charmhub.io/git-integrator/libraries/git/download)
  + *Last updated* 08 May 2026
  + *Revision* Library version 0.3

Library to manage the relation provided by the Git Integrator charm.

This library contains the Requires and Provides classes for handling the relation
between provider of the git relation interface (Git Integrator) and also the requirers.
Both the Requires and Provides classes supports multiple relations over the git
interfaces (the Git Integrator charm can share data with multiple downstream requirer
apps, and similarly, a requirer app can receive data from multiple upstream Git
Integrator charms.)

###### Requirer Charm

The following presents an example usage of the GitIntegratorRequires class:

```
import charms.git_integrator.v0.git as git

class CharmThatNeedsGit(ops.CharmBase):
    def __init__(self, *args) -> None:
        super().__init__(*args)

        self.git_requirer = git.GitRequires(
            self,
            "git", # relation endpoint
            callback=self.reconcile,
        )

        self.framework.observe(
            self.git_requirer.on.git_connection_information_update,
            self.print_git_connection_information,
        )

    def reconcile(self, event) -> None:
        # Reconciler method for this charm

        self.git_requirer.get_git_connection_information() # dict with git connection details

        # git connection details of a specific relation
        git_relations = self.model.relations["git"]
        for relation in git_relations:
            self.git_requirer.get_git_connection_information_for_relation(relation.id)

    def print_git_connection_information(self) -> None:
        # Print the git connection information
        print(f"New git connection info: {self.git_requirer.get_git_connection_information()}")
```

###### Provider Charm

The following presents an example usage of the GitProvides class:

```
import charms.git_integrator.v0.git as git

class GitIntegrator(ops.CharmBase):
    def __init__(self, *args) -> None:
        super().__init__(*args)

        self.git_provider = git.GitProvides(
            self,
            "git", # relation endpoint
            self.reconcile,
        )

    def reconcile(self, event) -> None:
        # Reconciler method for this charm

        self.git_provider.update_git_connection_information({
            "repository_url": "https://github.com/my/repo",
            "path": "custom/sub/directory",
        })
```

---

Index

* [class AuthenticationMethodEnum](https://charmhub.io/git-integrator/libraries/git#authenticationmethodenum)
* [class GitProviderModel](https://charmhub.io/git-integrator/libraries/git#gitprovidermodel)
* [class GitConnectionInformationUpdatedEvent](https://charmhub.io/git-integrator/libraries/git#gitconnectioninformationupdatedevent)
* + [def \_\_init\_\_(
    self,
    handle,
    relation,
    app,
    unit,
    content)](https://charmhub.io/git-integrator/libraries/git#gitconnectioninformationupdatedevent-__init__)
* + [def snapshot(
    self)](https://charmhub.io/git-integrator/libraries/git#gitconnectioninformationupdatedevent-snapshot)
* + [def restore(
    self,
    snapshot)](https://charmhub.io/git-integrator/libraries/git#gitconnectioninformationupdatedevent-restore)
* [class GitProvidesEvents](https://charmhub.io/git-integrator/libraries/git#gitprovidesevents)
* [class GitRequirerEventHandler](https://charmhub.io/git-integrator/libraries/git#gitrequirereventhandler)
* + [def \_\_init\_\_(
    self,
    charm,
    relation\_name,
    request\_model,
    unique\_key)](https://charmhub.io/git-integrator/libraries/git#gitrequirereventhandler-__init__)
* + [def provider\_content(
    self)](https://charmhub.io/git-integrator/libraries/git#gitrequirereventhandler-provider_content)
* [class GitProviderEventHandler](https://charmhub.io/git-integrator/libraries/git#gitprovidereventhandler)
* + [def \_\_init\_\_(
    self,
    charm,
    relation\_name,
    unique\_key)](https://charmhub.io/git-integrator/libraries/git#gitprovidereventhandler-__init__)
* + [def update\_git\_connection\_info(
    self,
    connection\_info,
    fields\_to\_reset)](https://charmhub.io/git-integrator/libraries/git#gitprovidereventhandler-update_git_connection_info)
* [class GitRequires](https://charmhub.io/git-integrator/libraries/git#gitrequires)
* + [def \_\_init\_\_(
    self,
    charm,
    relation\_name,
    callback)](https://charmhub.io/git-integrator/libraries/git#gitrequires-__init__)
* + [def on(
    self)](https://charmhub.io/git-integrator/libraries/git#gitrequires-on)
* + [def relations(
    self)](https://charmhub.io/git-integrator/libraries/git#gitrequires-relations)
* + [def is\_ready(
    self,
    relation)](https://charmhub.io/git-integrator/libraries/git#gitrequires-is_ready)
* + [def get\_git\_connection\_information\_for\_relation(
    self,
    relation\_id)](https://charmhub.io/git-integrator/libraries/git#gitrequires-get_git_connection_information_for_relation)
* + [def get\_git\_connection\_information(
    self)](https://charmhub.io/git-integrator/libraries/git#gitrequires-get_git_connection_information)
* [class GitProvides](https://charmhub.io/git-integrator/libraries/git#gitprovides)
* + [def \_\_init\_\_(
    self,
    charm,
    relation\_name,
    callback)](https://charmhub.io/git-integrator/libraries/git#gitprovides-__init__)
* + [def relations\_exists(
    self)](https://charmhub.io/git-integrator/libraries/git#gitprovides-relations_exists)
* + [def set\_git\_connection\_info(
    self,
    connection\_info)](https://charmhub.io/git-integrator/libraries/git#gitprovides-set_git_connection_info)

#### class AuthenticationMethodEnum

Description

Enum to encapsulate the possible Git authentication method options. None

#### class GitProviderModel

Description

Provider side of the git relation interface. None

#### class GitConnectionInformationUpdatedEvent

Description

Git connection information updated event. None

Methods

GitConnectionInformationUpdatedEvent.
\_\_init\_\_(

*self*

,
handle

,
relation

,
app

,
unit

,
content: TGitProviderModel
)

GitConnectionInformationUpdatedEvent.
snapshot(

*self*
)

Description

Save event information. None

GitConnectionInformationUpdatedEvent.
restore(

*self*

,
snapshot
)

Description

Restore event information. None

#### class GitProvidesEvents

Description

Events that Git provider can emit. None

#### class GitRequirerEventHandler

Description

Event Handler for Git requirer. None

Methods

GitRequirerEventHandler.
\_\_init\_\_(

*self*

,
charm

,
relation\_name: str

,
request\_model

,
unique\_key: str
)

Description

Builds a Git requirer event handler. None

GitRequirerEventHandler.
provider\_content(

*self*
)

Data from valid related git integrator charms.

Description

Only returns pydantic models for relations that have valid relation data.
If issues occur while building pydantic models from relation data, the
relation is not included in the returned models.

#### class GitProviderEventHandler

Description

Event Handler for Git provider. None

Methods

GitProviderEventHandler.
\_\_init\_\_(

*self*

,
charm

,
relation\_name: str

,
unique\_key: str
)

Description

Builds an Git provider event handler. None

GitProviderEventHandler.
update\_git\_connection\_info(

*self*

,
connection\_info

,
fields\_to\_reset
)

Update data to send to related charms.

Description

Do nothing if no relations present, unit is not leader, or no connection info
provided. Otherwise, build pydantic model from existing relation data or a new
model if no data set yet in relation, and write the model to the relation with
provided updates in connection\_info. Assumes inputted connection\_info is well
formatted.

#### class GitRequires

Description

A requirer handler encapsulating the git relation. None

Methods

GitRequires.
\_\_init\_\_(

*self*

,
charm

,
relation\_name: str

,
callback
)

GitRequires.
on(

*self*
)

Description

ops.CharmEvents containing custom events for this relation. None

GitRequires.
relations(

*self*
)

Description

Relations for the git interface. None

GitRequires.
is\_ready(

*self*

,
relation
)

Description

Readiness of a relation's git connection information. None

GitRequires.
get\_git\_connection\_information\_for\_relation(

*self*

,
relation\_id: int
)

Description

The git connection information for a relation. None

GitRequires.
get\_git\_connection\_information(

*self*
)

Description

Git connection information for all relations. None

#### class GitProvides

Description

A provider handler encapsulating the git relation. None

Methods

GitProvides.
\_\_init\_\_(

*self*

,
charm

,
relation\_name: str

,
callback
)

GitProvides.
relations\_exists(

*self*
)

Description

Indicates if git relations present. None

GitProvides.
set\_git\_connection\_info(

*self*

,
connection\_info
)

Set git connection info appropriately in all relations.

Arguments

connection\_info
(dict[str, str])

fields to update in the pydantic model
Valid keys:

* repository\_url
* path
* tracking\_ref
* authentication\_method
* credentials\_username (if authentication\_method == "credentials")
* credentials\_personal\_access\_token (if authentication\_method == "credentials")
* ssh\_private\_key (if authentication\_method == "ssh")
* ssh\_passphrase (optional if authentication\_method == "ssh")
* ssh\_strict\_host\_key\_checking (optional if authentication\_method == "ssh")
* ssh\_port (optional if authentication\_method == "ssh")
