Page MenuHomePhabricator

D21681.id.diff
No OneTemporary

D21681.id.diff

diff --git a/src/filesystem/binary/PhutilMercurialBinaryAnalyzer.php b/src/filesystem/binary/PhutilMercurialBinaryAnalyzer.php
--- a/src/filesystem/binary/PhutilMercurialBinaryAnalyzer.php
+++ b/src/filesystem/binary/PhutilMercurialBinaryAnalyzer.php
@@ -7,6 +7,8 @@
const CAPABILITY_FILES = 'files';
const CAPABILITY_INJECTION = 'injection';
+ const CAPABILITY_TEMPLATE_PNODE = 'template_pnode';
+ const CAPABILTIY_ANNOTATE_TEMPLATES = 'annotate_templates';
protected function newBinaryVersion() {
$future = id(new ExecFuture('hg --version --quiet'))
@@ -60,6 +62,33 @@
self::CAPABILITY_INJECTION);
}
+ /**
+ * When using `--template` the format for accessing individual parents
+ * changed from `{p1node}` to `{p1.node}` in Mercurial 4.9.
+ *
+ * @return boolean True if the version of Mercurial is new enough to support
+ * the `{p1.node}` format in templates, or false if otherwise.
+ */
+ public function isMercurialTemplatePnodeAvailable() {
+ return self::versionHasCapability(
+ $this->requireBinaryVersion(),
+ self::CAPABILITY_TEMPLATE_PNODE);
+ }
+
+ /**
+ * The `hg annotate` command did not accept the `--template` argument until
+ * version 4.6. It appears to function in version 4.5 however it's not
+ * documented and wasn't announced until the 4.6 release.
+ *
+ * @return boolean True if the version of Mercurial is new enough to support
+ * the `--template` option when using `hg annotate`, or false if otherwise.
+ */
+ public function isMercurialAnnotateTemplatesAvailable() {
+ return self::versionHasCapability(
+ $this->requireBinaryVersion(),
+ self::CAPABILTIY_ANNOTATE_TEMPLATES);
+ }
+
public static function versionHasCapability(
$mercurial_version,
@@ -70,6 +99,10 @@
return version_compare($mercurial_version, '3.2', '>=');
case self::CAPABILITY_INJECTION:
return version_compare($mercurial_version, '3.2.4', '<');
+ case self::CAPABILITY_TEMPLATE_PNODE:
+ return version_compare($mercurial_version, '4.9', '>=');
+ case self::CAPABILTIY_ANNOTATE_TEMPLATES:
+ return version_compare($mercurial_version, '4.6', '>=');
default:
throw new Exception(
pht(

File Metadata

Mime Type
text/plain
Expires
Wed, Oct 16, 11:39 PM (1 d, 8 h ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6719668
Default Alt Text
D21681.id.diff (2 KB)

Event Timeline