in git indizieren würde esAdd bereits aufgespürte Datei
1. create file a.txt
2. commit file a.txt
3. a.txt is tracked
sein, die ich einfach, dass in libgit2 tun kann. jedoch Wenn ich a.txt ändern und wollte es Index hinzufügen will ich tun git add a.txt
Leider kann ich nicht emulieren mit libgit2. Ich habe praktisch alles versucht, was das Internet angeboten hat, aber nichts hat funktioniert. Ich fühle, dass ich etwas Grundlegendes vermisse. Beachten Sie, dass ich neue Dateien hinzufügen kann, die dem Index nicht ohne Probleme nachverfolgt werden, nur kann ich keine Möglichkeit finden, sie hinzuzufügen.
Hier ist der Code, den ich habe.
void add_file(char *file)
{
git_index *index;
int error;
const git_index_entry *entry;
git_index_entry new_entry;
error = git_repository_index(&index, m_repo);
entry = git_index_get_bypath(index,file, 0);
if(entry)
{
memcpy(&new_entry, entry, sizeof(git_index_entry));
new_entry.path = file;
new_entry.mode = GIT_FILEMODE_BLOB;
error = git_index_add(index, &entry);
}
else
error = git_index_add_bypath(index, file);
error = git_index_write(index);
git_index_free(index);
}
EDIT:
Nach Eds Beitrag habe ich meinen Code aktualisieren, aber es ist das Hinzufügen noch nur neue Dateien, die nicht verfolgt werden.
git_index *index;
git_oid tree;
int error;
error = git_repository_index(&index, m_repo);
error = git_index_add_bypath(index, file);
error = git_index_write(index);
error = git_index_write_tree(&tree, index);
git_index_free(index);
können Sie ein wenig in Bezug auf die API-Aufruf für das erklären: „Sie müssten die Datei in der Objektdatenbank hinzuzufügen und dann den Index mit dem resultierenden OID aktualisieren“ die API-Methoden sollte ich genau nennen? –
Egal, ich habe es gefunden. Es ist 'git_index_write_tree'. –
Ich glaube, ich habe missverstanden, was du gesagt hast. Kannst du den dritten Absatz vielleicht mit einem Beispiel erläutern (; nicht unbedingt voll funktionsfähig)? Ich dachte, ich hätte es verstanden, aber ich glaube, ich habe es völlig falsch verstanden. Siehe aktualisierten Beitrag –