VCS: Use relative path for apply/revert chunk

Task-number: QTCREATORBUG-9715

Change-Id: I3bfaea3922ace396230ef5e215712a9f3459808b
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
This commit is contained in:
Orgad Shaneh
2013-07-01 22:56:36 +03:00
committed by Orgad Shaneh
parent db4ce016bc
commit 20e9b33741
3 changed files with 8 additions and 5 deletions

View File

@@ -98,9 +98,11 @@ bool DiffChunk::isValid() const
return !fileName.isEmpty() && !chunk.isEmpty(); return !fileName.isEmpty() && !chunk.isEmpty();
} }
QByteArray DiffChunk::asPatch() const QByteArray DiffChunk::asPatch(const QString &workingDirectory) const
{ {
const QByteArray fileNameBA = QFile::encodeName(fileName); QString relativeFile = workingDirectory.isEmpty() ?
fileName : QDir(workingDirectory).relativeFilePath(fileName);
const QByteArray fileNameBA = QFile::encodeName(relativeFile);
QByteArray rc = "--- "; QByteArray rc = "--- ";
rc += fileNameBA; rc += fileNameBA;
rc += "\n+++ "; rc += "\n+++ ";
@@ -1466,7 +1468,8 @@ bool VcsBaseEditorWidget::canApplyDiffChunk(const DiffChunk &dc) const
// (passing '-R' for revert), assuming we got absolute paths from the VCS plugins. // (passing '-R' for revert), assuming we got absolute paths from the VCS plugins.
bool VcsBaseEditorWidget::applyDiffChunk(const DiffChunk &dc, bool revert) const bool VcsBaseEditorWidget::applyDiffChunk(const DiffChunk &dc, bool revert) const
{ {
return VcsBasePlugin::runPatch(dc.asPatch(), QString(), 0, revert); return VcsBasePlugin::runPatch(dc.asPatch(d->m_diffBaseDirectory),
d->m_diffBaseDirectory, 0, revert);
} }
QString VcsBaseEditorWidget::fileNameFromDiffSpecification(const QTextBlock &inBlock) const QString VcsBaseEditorWidget::fileNameFromDiffSpecification(const QTextBlock &inBlock) const

View File

@@ -78,7 +78,7 @@ class VCSBASE_EXPORT DiffChunk
{ {
public: public:
bool isValid() const; bool isValid() const;
QByteArray asPatch() const; QByteArray asPatch(const QString &workingDirectory) const;
QString fileName; QString fileName;
QByteArray chunk; QByteArray chunk;

View File

@@ -1056,7 +1056,7 @@ bool VcsBasePlugin::runPatch(const QByteArray &input, const QString &workingDire
QStringList args(QLatin1String("-p") + QString::number(strip)); QStringList args(QLatin1String("-p") + QString::number(strip));
if (reverse) if (reverse)
args << QLatin1String("-R"); args << QLatin1String("-R");
ow->appendCommand(QString(), patch, args); ow->appendCommand(workingDirectory, patch, args);
patchProcess.start(patch, args); patchProcess.start(patch, args);
if (!patchProcess.waitForStarted()) { if (!patchProcess.waitForStarted()) {
ow->appendError(tr("Unable to launch '%1': %2").arg(patch, patchProcess.errorString())); ow->appendError(tr("Unable to launch '%1': %2").arg(patch, patchProcess.errorString()));