Предложение по улучшению моего скрипта Powershell для обновления папки клонов с последним содержимым от мастера - PullRequest
0 голосов
/ 31 октября 2018

Хотел спросить сообщество о подходе, который я здесь использую, чтобы обновить папку клона с мастера.

У меня есть две папки

  1. Основная папка, представляющая собой решение, связанное с TFS (Azure Dev Opps).
  2. Клон мастера, но Github - это репо.

Моя основная папка является «решением TFS», она живет в своей собственной экосистеме и имеет своих собственных внутренних пользователей, а для клона «Github» у нее есть свои внешние пользователи и собственная экосистема.

С помощью этого скрипта я собираюсь поддерживать актуальность репо-клона с последними изменениями в мастере.

Мастер вносит изменения ----> Файл клонирования, в котором происходят изменения, обновляется

Важно, чтобы я не вырезал и не вставлял слепо всю папку от мастера к клону каждый раз, когда я вносил изменения. Вот сценарий, который я сделал, сейчас он работает хорошо, но я хотел знать, есть ли дыры в моей логике, спасибо.

#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
        }}
}

1 Ответ

0 голосов
/ 31 октября 2018

выглядит довольно солидно для меня. Есть ли способ естественной синхронизации Git Repo с TFS? У меня нет опыта работы с TFS ..

Другой способ справиться с этим - заархивировать содержимое C:\Users\Clone\*.* в файл с меткой времени (например, OldFiles_changed_01_01_2018_10_42_am.zip ) и просто скопировать недавно измененный репозиторий - таким образом, у вас есть исторический копии в C:\Users\Clone\ каждого внесенного изменения .. (хотя это несколько избыточно, поскольку вы используете Git на переднем конце)

Что касается «лучших практик», которые в наши дни обычно означают просто «безопасность», то это выглядит хорошо для меня. Что касается «на практике» - это действительно то, что лучше всего подходит для вашего сценария. Если вам не нужны * .zip резервные копии каждый раз, когда есть изменения, то ваш оригинальный сценарий выглядит солидно.

...