Page MenuHomePhabricator

D21041.id50125.diff
No OneTemporary

D21041.id50125.diff

diff --git a/src/workflow/ArcanistDiffWorkflow.php b/src/workflow/ArcanistDiffWorkflow.php
--- a/src/workflow/ArcanistDiffWorkflow.php
+++ b/src/workflow/ArcanistDiffWorkflow.php
@@ -2900,6 +2900,10 @@
'uri' => $staging_uri,
);
+ list($err, $stdout, $stderr) = exec_manual(
+ "git ls-files ':(attr:filter=lfs)'");
+ $is_lfs = !empty($stdout);
+
// If the base commit is a real commit, we're going to push it. We don't
// use this, but pushing it to a ref reduces the amount of redundant work
// that Git does on later pushes by helping it figure out that the remote
@@ -2923,7 +2927,7 @@
$refs[] = array(
'ref' => $diff_tag,
'type' => 'diff',
- 'commit' => $commit,
+ 'commit' => $is_lfs ? $base_commit : $commit,
'remote' => $remote,
);
@@ -2932,12 +2936,20 @@
$ref_list[] = $ref['commit'].':'.$ref['ref'];
}
+ if ($is_lfs) {
+ exec_manual('git lfs uninstall');
+ }
+
$err = phutil_passthru(
'git push %Ls -- %s %Ls',
$push_flags,
$staging_uri,
$ref_list);
+ if ($is_lfs) {
+ exec_manual('git lfs install');
+ }
+
if ($err) {
$this->writeWarn(
pht('STAGING FAILED'),
@@ -2949,6 +2961,15 @@
'use --skip-staging to skip this step.'));
}
+ if ($is_lfs) {
+ $ref = '+'.$commit.':'.$diff_tag;
+ $err = phutil_passthru(
+ 'git push %Ls -- %s %s',
+ $push_flags,
+ $staging_uri,
+ $ref);
+ }
+
return $refs;
}

File Metadata

Mime Type
text/plain
Expires
Thu, May 9, 4:04 AM (3 w, 3 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6273957
Default Alt Text
D21041.id50125.diff (1 KB)

Event Timeline