Инкрементальный индекс, пресеты автосейва, упрощение git-слоя
- VaultIndex: updateFile/removeFile/syncIncremental по mtime+size, полный рескан только на старте/смене/внешних правках; relink висячих ссылок; FileStore.externalChanged - QML: точечные обновления индекса вместо rebuild на каждый сейв - Настройки: пресеты safe/balanced/eco/manual + диалог с +/- и шкалами; коммит после паузы, в manual — по Ctrl+S - GitManager: кэш истории, пагинация, diff в потоке, точечный commitFile, fileExistedAt, топологический порядок истории - Удалены highlightedCode, словный merge, fileDiffText/Html, 2-arg fileHistory
This commit is contained in:
@@ -167,6 +167,19 @@ int main(int argc, char *argv[])
|
||||
return fail("paged cache");
|
||||
// limit<=0 — как раньше (всё)
|
||||
if(git.fileHistory(vault, file, 0).size() != full.size()) return fail("limit 0");
|
||||
// разреженная история: 30 чужих коммитов — касания файла всё равно находятся,
|
||||
// hasMore-логика (limit+1) при этом не врёт
|
||||
for (int i = 0; i < 30; ++i) {
|
||||
QFile fn(vault+"/noise.md");
|
||||
if(!fn.open(QIODevice::WriteOnly | QIODevice::Append)) return fail("noise open");
|
||||
fn.write(QString("n%1\n").arg(i).toUtf8());
|
||||
fn.close();
|
||||
if(!git.commitAll(vault, QString("noise %1").arg(i))) return fail("noise commit", git.lastError());
|
||||
}
|
||||
QVariantList sparse = git.fileHistory(vault, file, 3);
|
||||
if(sparse.size() != 3) return fail("sparse size", QString::number(sparse.size()));
|
||||
if(sparse.first().toMap().value("hash") != full.first().toMap().value("hash"))
|
||||
return fail("sparse order");
|
||||
}
|
||||
|
||||
// fileExistedAt: отличает «пустой файл» от «файла не было»
|
||||
|
||||
Reference in New Issue
Block a user