From: Thiago Macieira Date: Sun, 24 Aug 2008 12:45:08 +0000 (+0200) Subject: Store the modified files in git-fast-import format already. X-Git-Url: https://repo.or.cz/w/svn-all-fast-export.git/commitdiff_plain/e3f0499dfacda04c6c7de3cc103d9f1824f0d251 Store the modified files in git-fast-import format already. I don't know what went wrong, but importing KDE revision 296047 there was a mixup with the marks. So instead avoid the trouble and store the thing in in cooked format already --- diff --git a/src/repository.cpp b/src/repository.cpp index e74ab20..890c10c 100644 --- a/src/repository.cpp +++ b/src/repository.cpp @@ -212,19 +212,26 @@ void Repository::Transaction::deleteFile(const QString &path) QIODevice *Repository::Transaction::addFile(const QString &path, int mode, qint64 length) { - FileProperties fp; - fp.mode = mode; - fp.mark = ++lastmark; + int mark = ++lastmark; + + if (modifiedFiles.capacity() == 0) + modifiedFiles.reserve(2048); + modifiedFiles.append("M "); + modifiedFiles.append(QByteArray::number(mode, 8)); + modifiedFiles.append(" :"); + modifiedFiles.append(QByteArray::number(mark)); + modifiedFiles.append(' '); + modifiedFiles.append(path.toUtf8()); + modifiedFiles.append("\n"); #ifndef DRY_RUN repository->fastImport.write("blob\nmark :"); - repository->fastImport.write(QByteArray::number(fp.mark)); + repository->fastImport.write(QByteArray::number(mark)); repository->fastImport.write("\ndata "); repository->fastImport.write(QByteArray::number(length)); repository->fastImport.write("\n", 1); #endif - modifiedFiles.insert(path, fp); return &repository->fastImport; } @@ -269,16 +276,7 @@ void Repository::Transaction::commit() repository->fastImport.write("D " + df.toUtf8() + "\n"); // write the file modifications - QHash::ConstIterator it = modifiedFiles.constBegin(); - for ( ; it != modifiedFiles.constEnd(); ++it) { - repository->fastImport.write("M ", 2); - repository->fastImport.write(QByteArray::number(it->mode, 8)); - repository->fastImport.write(" :", 2); - repository->fastImport.write(QByteArray::number(it->mark)); - repository->fastImport.write(" ", 1); - repository->fastImport.write(it.key().toUtf8()); - repository->fastImport.write("\n", 1); - } + repository->fastImport.write(modifiedFiles); repository->fastImport.write("\nprogress Commit #" + QByteArray::number(repository->commitCount) + diff --git a/src/repository.h b/src/repository.h index d837599..9a49040 100644 --- a/src/repository.h +++ b/src/repository.h @@ -30,10 +30,6 @@ public: { Q_DISABLE_COPY(Transaction) friend class Repository; - struct FileProperties { - int mode; - int mark; - }; Repository *repository; QByteArray branch; @@ -45,7 +41,7 @@ public: int lastmark; QStringList deletedFiles; - QHash modifiedFiles; + QByteArray modifiedFiles; inline Transaction() {} public: