Skip to content

Git synchronization ​

These tools drive the system Git on the vault's repository: read its state, synchronize it with the remote, commit, resolve a real conflict. Initializing the repository or connecting it to a remote is done in the application, not here.

mem_git_status writes nothing to the vault. mem_git_sync, mem_git_commit and mem_git_resolve act on the repository; mem_git_commit and mem_git_resolve should only be called with the user's agreement, as their descriptions say.

To ask for them by talking to your agent, see Sync the memory.

In practice ​

You ask your agent

« Where does my memory's Git synchronization stand? Query the remote first. »

→ The agent callsmem_git_status
  • fetch = true
You ask your agent

« Synchronize my memory with the remote. »

→ The agent callsmem_git_sync
You ask your agent

« Commit my changes with the message "session notes" and push. »

→ The agent callsmem_git_commit
  • message = session notes

The tools ​

mem_git_status ​

Reports the vault's git state: branch, remote, ahead/behind counts, uncommitted changes, operation in progress, files carrying conflict markers and the Obsidian Git plugin state; writes nothing to the vault.

Catalog description (French, verbatim):

Rend l'état git du vault : branche, distant (sans identifiants), en avance / en retard sur la branche suivie, changements non commités comptés et listés, opération en cours, fichiers suivis portant des marqueurs de conflit, et l'état du greffon Obsidian Git. Sans réseau par défaut ; fetch: true interroge d'abord le distant. N'écrit rien dans le vault. Git introuvable n'est pas une erreur : l'état le dit, avec la commande d'installation.

Paramètre / ParameterTypeRequis / RequiredDescription (catalogue)
fetchbooleannon / noVrai : git fetch origin d'abord, pour que en avance / en retard soient à jour. Faux (défaut) : aucun réseau.

mem_git_sync ​

Synchronizes the vault with its remote: fetch, rebase of local commits if the remote moved, then push; never forced, and a real conflict aborts the rebase and lists the files involved.

Catalog description (French, verbatim):

Synchronise le vault avec son distant : fetch, rebase des commits locaux si le distant a avancé, puis poussée. Jamais forcé, jamais d'autostash. Un conflit réel ANNULE le rebase (le dépôt revient à l'état d'avant, aucun marqueur n'est laissé) et rend les fichiers en cause — le résoudre est une tâche, voir la procédure mem-git. Refusé si des changements non commités empêchent le rebase. À appeler en début et en fin de session, et quand un compte rendu de synchronisation n'est pas synchronise.

Aucun paramètre. / No parameters.

mem_git_commit ​

Commits the vault's uncommitted changes (all of them, or the given paths) with your message, then pushes by default; refuses files carrying conflict markers, and should only be called with the user's explicit agreement.

Catalog description (French, verbatim):

Commite les changements non commités du vault — tous, ou les chemins donnés — avec le message fourni, puis pousse (par défaut). Refusé si un fichier à commiter porte des marqueurs de conflit. À n'appeler qu'avec l'accord explicite de l'utilisateur : ces changements sont les siens.

Paramètre / ParameterTypeRequis / RequiredDescription (catalogue)
allow_markersbooleannon / noVrai : un fichier qui CITE un marqueur de conflit (une note qui parle de git, un bloc de code) est accepté. Faux (défaut) : refusé.
messagestringoui / yesMessage de commit, non vide, 1 000 caractères au plus.
pathsarray<string>non / noChemins relatifs au vault à commiter. Absent : tous les changements.
pushbooleannon / noPousser après le commit (vrai par défaut).

mem_git_resolve ​

Resolves a real git conflict between this machine and the remote in two steps: without resolutions it only inspects and returns the three versions of each conflicting file; with resolutions and the returned fingerprint it merges, commits and pushes, only with the user's agreement on the merged text.

Catalog description (French, verbatim):

Résout un conflit git RÉEL entre ce poste et le distant, en deux temps. SANS resolutions : inspecte — fetch, prépare la fusion du distant, rend pour chaque fichier en conflit ses trois versions (base, local, distant) et une empreinte, puis annule : le dépôt ne change pas. AVEC resolutions et l'empreinte rendue : refait la même fusion, écrit le texte résolu de chaque fichier (aucun marqueur de conflit accepté ; content: null explicite supprime le fichier ; un fichier binaire ne se résout que par keep: local | distant), régénère les index dérivés, commite la fusion et pousse. Tout échec annule la fusion : aucun marqueur n'est jamais laissé. À n'employer qu'avec l'accord de l'utilisateur sur le texte fusionné. Voir la procédure mem-git.

Paramètre / ParameterTypeRequis / RequiredDescription (catalogue)
allow_markersbooleannon / noVrai : un texte résolu qui CITE un marqueur de conflit (une note qui parle de git) est accepté. Faux (défaut) : refusé.
fingerprintstringnon / noL'empreinte rendue par l'inspection. Obligatoire avec resolutions : si le dépôt ou le distant a bougé depuis, rien n'est fait.
resolutionsarray<object>non / noAbsent : inspecter. Présent : le texte résolu de CHAQUE fichier en conflit rendu par l'inspection (les index dérivés sont régénérés, ne pas les fournir).
resolutions[].contentstringnullnon / no
resolutions[].keepstringnon / noAu lieu de content : « local » ou « distant », garder ce côté tel quel, octet pour octet. Seul choix accepté pour un fichier binaire.
resolutions[].pathstringoui / yesChemin relatif au vault, tel que l'inspection l'a rendu.

Kessho · Cookie-free audience measurement, on an ArboRithm server.