diff --git a/scripts/release/stage-tasks.py b/scripts/release/stage-tasks.py index 2fc9fdf..67a423c 100755 --- a/scripts/release/stage-tasks.py +++ b/scripts/release/stage-tasks.py @@ -148,28 +148,36 @@ def pushToMirrors(productName, version, buildNumber, stageServer, except CalledProcessError: if overwrite: log.info('target directory %s exists, but overwriting files as requested' % target_dir) elif dryRun: log.warning('WARN: target directory %s exists', target_dir) else: raise + rsync_cmd = ['rsync', '-av'] + if dryRun: + rsync_cmd.append('-n') if not dryRun: - run_remote_cmd(['mkdir', '-p', target_dir], server=stageServer, - username=stageUsername, sshKey=stageSshKey) + # Copy all file using hadrlinks to a hidden directory + hidden_dir = "." + source_dir + run_remote_cmd(['cp', '-al', source_dir, hidden_dir], + server=stageServer, username=stageUsername, + sshKey=stageSshKey) + # delete not needed files + run_remote_cmd( + rsync_cmd + excludes + ["--delete-excluded", source_dir, + hidden_dir], + server=stageServer, username=stageUsername, sshKey=stageSshKey) + # Move to the target directory finally + run_remote_cmd(['mv', '-vf', hidden_dir, target_dir], + server=stageServer, username=stageUsername, sshKey=stageSshKey) run_remote_cmd( ['chmod', 'u=rwx,g=rxs,o=rx', target_dir], server=stageServer, username=stageUsername, sshKey=stageSshKey) - rsync_cmd = ['rsync', '-av'] - if dryRun: - rsync_cmd.append('-n') - run_remote_cmd(rsync_cmd + excludes + [source_dir, target_dir], - server=stageServer, username=stageUsername, - sshKey=stageSshKey) indexFileTemplate = """\ Thanks for your interest in Firefox %(version)s