8
votes

Commettre une chaîne avec jgit

une question JGIT-Débutant:

J'utilise JGIT pour lire un fichier (blob) à partir d'un référentiel et manipuler son contenu. Après cela, je veux écrire le nouveau contenu avec le même nom de fichier dans le référentiel comme un nouveau commit. Mais comment puis-je commettre le nouveau contenu avec jgit?

mon pseudo-code: xxx

Dois-je écrire le NewContent dans un fichier et validez ce fichier avec le AddCommand et CommitCommand ? Ou puis-je écrire la chaîne "sur la mouche" dans le référentiel sous le même nom de fichier?

y a-t-il lieu dans le Web un exemple de commis avec JGIT?


2 commentaires

En ce qui concerne un exemple de commitcommande, je vous suggère d'avoir un coup d'œil à ma réponse Ici .


Je recommande également d'utiliser l'API de porcelaine (c.-à-d. AddCommand , commitcommand ) comme suggéré dans les réponses, mais si vous voulez vraiment vous engager sur la mouche Vous pouvez trouver cet article utile :: CodeAffine.com/2014/10/ 20 / git-internes


3 Réponses :


6
votes

Je pense qu'il n'y a pas d'autre moyen de commettre des données que d'utiliser le ComitéCommand (à l'exception de la fusion ou de ces opérations très spécifiques).

Alors, oui, vous devez modifier votre fichier, puis l'ajouter et l'ajouter (à l'aide de AddCommand et de commitCommand de l'API).


1 commentaires

Ok, je vais essayer cela, car il semble être le moyen le plus simple et peut-être peut-être l'optimiser plus tard.



3
votes

Vous voudrez peut-être examiner l'utilisation de BLOB dans Git. Cette technique est utilisée pour stocker la clé publique de la clé PGP lors de la signature des balises. Il semble que le contenu em> vous voulez encore doit être mis dans un fichier, mais il peut s'agir d'un fichier temporel. Le fichier n'existe pas dans le répertoire principal lorsque quelqu'un fait une traction. Ce sera une entrée dans l'arborescence comme une blob.

http: //book.git -scm.com/7_raw_git.html p>

Le -w code> lui indique d'écrire l'entrée avec le renvoi du hachage. P>

git hash-object -w myfile.txt
6ff87c4664981e4397625791c8ea3bbb5f2279a3


1 commentaires

HM, très intéressant, merci. Mais je resterai avec le complément / commitcommand, car c'est maintenant le plus facile.



4
votes

Oui, bien sûr, vous pouvez faire ce que vous voulez, mais n'utilisez tout simplement pas d'ajouter / commettre car ils font partie du de haut niveau porcelein API qui est juste une API de commodité construite sur top de l'API de faible niveau. Ainsi, ils implémentent simplement les cas d'utilisation les plus courants.

Ce que vous devez faire est de regarder la mise en œuvre du addCommand et commitcommand Pour voir comment utiliser l'API de niveau inférieur pour créer des objets blob, puis des objets d'arborescence et valider des objets.

Je détadais la recommandation que vous avez parfaitement Lire le chapitre 9 du livre Pro Git < / a> Pour que vous comprenez correctement à quel point Git fonctionne à bas niveau.


0 commentaires