改进我的 Powershell 脚本以使用 master 的最新内容更新克隆文件夹的建议
Suggestion to improve my Powershell script to update a clone folder with the latest content from master
想向社区询问我在这里使用的方法来更新主控的克隆文件夹。
我有两个文件夹
- 作为 TFS(Azure Dev Opps) 绑定解决方案的主文件夹。
- master 的克隆,但 Github 是 repo。
我的主文件夹是一个 'TFS solution' 它存在于自己的生态系统中并有自己的内部用户,至于克隆 'Github' 它有自己的外部用户并有自己的生态系统.
使用此脚本,我的目标是使克隆库与主库的最新更改保持同步。
Master 进行更改----> Clone File 更改发生得到更新
重要的是,每次我进行更改时,我都不要盲目地将整个文件夹从 master 剪切并粘贴到 clone,这是我制作的脚本,目前运行良好,但我想知道是否有我的逻辑有什么漏洞,谢谢。
#Create path variables
$olddir = "C:\Data\Master"
$newdir = "C:\Users\Clone"
#Get the list of files in oldFolder
$oldfiles = Get-ChildItem -Recurse -path $olddir | Where-Object {-not ($_.PSIsContainer)}
#get the list of files in new folder
$newfiles = Get-ChildItem -Recurse -path $newdir | Where-Object {-not ($_.PSIsContainer)}
Compare-Object $newfiles $oldfiles -Property LastWriteTime -Passthru | sort LastWriteTime | foreach {
$fl = (($_.Fullname).ToString().Replace("$olddir","$newdir"))
$dir = Split-Path $fl
if ($fl -notlike '*\obj\Release\*'){
if( $_.Fullname -ne $fl){
If (!(Test-Path $dir)){
mkdir $dir
}
copy-item $_.Fullname $fl -Force
Write-Host "From to --> " $_.Fullname "TO --> " $fl
}}
}
我觉得很结实。有什么方法可以将 Git Repo 与 TFS 本地同步吗?我没有任何 TFS 经验..
另一种处理方法是将 C:\Users\Clone\*.*
的内容压缩到带时间戳的文件(例如:OldFiles_changed_01_01_2018_10_42_am.zip),然后复制过来新修改的回购 - 这样你就可以在 C:\Users\Clone\
中获得每次更改的历史副本..(尽管,这有点多余,因为你在前端使用 Git)
至于 "best practices" - 这几天基本上只是意味着 'security' - 它对我来说看起来不错。至于 "in practice" - 这确实是最适合您的情况的方法。如果您不需要 *.zip 每次发生更改时的备份,那么您的原始脚本看起来很可靠。
想向社区询问我在这里使用的方法来更新主控的克隆文件夹。
我有两个文件夹
- 作为 TFS(Azure Dev Opps) 绑定解决方案的主文件夹。
- master 的克隆,但 Github 是 repo。
我的主文件夹是一个 'TFS solution' 它存在于自己的生态系统中并有自己的内部用户,至于克隆 'Github' 它有自己的外部用户并有自己的生态系统.
使用此脚本,我的目标是使克隆库与主库的最新更改保持同步。
Master 进行更改----> Clone File 更改发生得到更新
重要的是,每次我进行更改时,我都不要盲目地将整个文件夹从 master 剪切并粘贴到 clone,这是我制作的脚本,目前运行良好,但我想知道是否有我的逻辑有什么漏洞,谢谢。
#Create path variables
$olddir = "C:\Data\Master"
$newdir = "C:\Users\Clone"
#Get the list of files in oldFolder
$oldfiles = Get-ChildItem -Recurse -path $olddir | Where-Object {-not ($_.PSIsContainer)}
#get the list of files in new folder
$newfiles = Get-ChildItem -Recurse -path $newdir | Where-Object {-not ($_.PSIsContainer)}
Compare-Object $newfiles $oldfiles -Property LastWriteTime -Passthru | sort LastWriteTime | foreach {
$fl = (($_.Fullname).ToString().Replace("$olddir","$newdir"))
$dir = Split-Path $fl
if ($fl -notlike '*\obj\Release\*'){
if( $_.Fullname -ne $fl){
If (!(Test-Path $dir)){
mkdir $dir
}
copy-item $_.Fullname $fl -Force
Write-Host "From to --> " $_.Fullname "TO --> " $fl
}}
}
我觉得很结实。有什么方法可以将 Git Repo 与 TFS 本地同步吗?我没有任何 TFS 经验..
另一种处理方法是将 C:\Users\Clone\*.*
的内容压缩到带时间戳的文件(例如:OldFiles_changed_01_01_2018_10_42_am.zip),然后复制过来新修改的回购 - 这样你就可以在 C:\Users\Clone\
中获得每次更改的历史副本..(尽管,这有点多余,因为你在前端使用 Git)
至于 "best practices" - 这几天基本上只是意味着 'security' - 它对我来说看起来不错。至于 "in practice" - 这确实是最适合您的情况的方法。如果您不需要 *.zip 每次发生更改时的备份,那么您的原始脚本看起来很可靠。