如何使用TortoiseHg的“PowerShell FTP客户端模块”自动部署已提交的更改?

时间:2017-02-28 23:39:15

标签: powershell deployment ftp tortoisehg

背景 我正在维护一个简单的html / php网站:http://www.archskirt.com.au/index.php

我使用notepad ++编辑网站的本地副本,我使用TortoiseHg v4.0进行版本控制,然后使用FileZilla v3.24将更改上传到实际网站。我想用“PowerShell FTP Client Module” 自动化我的部署过程,以便更快,更不容易出现人为错误。我是PowerShell及其集成脚本环境的新手,我很难理解“介绍性”指南中所说内容的一半以上。

这是我当前的代码在pushtotest.ps1

##### Establish a connection to ftp.server.com.au #####
Import-Module PSFTP

$FTPServer = 'ftp.server.com.au'
$FTPUsername = 'username'
$FTPPassword = 'password'
$FTPSecurePassword = ConvertTo-SecureString -String $FTPPassword -asPlainText -Force
$FTPCredential = New-Object System.Management.Automation.PSCredential($FTPUsername,$FTPSecurePassword)

Set-FTPConnection -Credentials $FTPCredential -Server $FTPServer -Session MySession -UsePassive 
$Session = Get-FTPConnection -Session MySession 

##### Get list of files that have changed from TortoiseHG #####
Set-Location -path c:\xampp\htdocs\
$changeList = hg status --change . -n
echo $changeList

##### Copy files from local directory to live directory #####

ForEach ($file in $changeList) {
  $fileName = (Get-Item $file).Name
  echo $fileName

  $localPath = (Get-Item $file).FullName
  echo $localPath

  $relativePath = ??
  echo $relativePath

  Add-FTPItem -path "/home/server/public_html/$relativePath" -localpath $localPath -Overwrite
}

echo $ changeList的结果是:

file.php
subdir\file4.php
subdir\file7.php
subdir\subdir2\file11.php

echo $ fileName的结果是:

file.php
file4.php
file7.php
file11.php

echo $ localPath的结果是:

c:\xampp\htdocs\file.php
c:\xampp\htdocs\subdir\file4.php
c:\xampp\htdocs\subdir\file7.php
c:\xampp\htdocs\subdir\subdir2\file11.php

我认为我需要的是$ relativePath包含与$ changeList相同的东西,但没有文件名。我不确定该怎么做。

奖金问题:当我将包含反斜杠的变量放入使用正斜杠编写的路径时,我的代码是否有效?例如:

Add-FTPItem -path "/home/server/public_html/$relativePath"

0 个答案:

没有答案