Rewrite the diff parser and reduce the memory footprint.

The diff parser code was rewritten for clarity and speed and now handles
a couple of ugly cornercases, like SVN's property change output and single
change chunks, much better. Since the path parsing was unified as well,
the SCM interface gained a new method `getPathStripLevel()` which determines
how many path components need to be shoven off a file name for the SCM
to form a valid path in the workspace (similar to patch(1)'s --strip option).
Fixes issue 627. Automated tests follow.
This commit is contained in:
Patrick Georgi
2011-03-16 23:50:41 +01:00
committed by Thomas Keller
parent 6fb9b72e22
commit baa88412b9
7 changed files with 105 additions and 147 deletions

View File

@@ -464,4 +464,12 @@ class IDF_Scm_Mercurial extends IDF_Scm
escapeshellarg($commit));
return new Pluf_HTTP_Response_CommandPassThru($cmd, 'application/x-zip');
}
/**
* @see IDF_Scm::getDiffPathStripLevel()
*/
public function getDiffPathStripLevel()
{
return 1;
}
}