Git 建议改进我的Powershell脚本,以使用来自master的最新内容更新克隆文件夹

Git 建议改进我的Powershell脚本,以使用来自master的最新内容更新克隆文件夹,git,powershell,tfs,devops,Git,Powershell,Tfs,Devops,想向社区询问我在这里采用的从主机更新克隆文件夹的方法 我有两个文件夹 主文件夹是TFS(Azure Dev Opps)绑定的解决方案 主机的克隆,但Github是repo “我的主文件夹”是一个“TFS解决方案”,它生活在自己的生态系统中,有自己的内部用户,而克隆“Github”则有自己的外部用户和自己的生态系统 使用此脚本,我的目标是使克隆repo保持最新状态,并对主副本进行最新更改 主机进行更改-->克隆文件发生的更改将得到更新 重要的是,每次我做更改时,不要盲目地将整个文件夹从主文件夹剪切

想向社区询问我在这里采用的从主机更新克隆文件夹的方法

我有两个文件夹

  • 主文件夹是TFS(Azure Dev Opps)绑定的解决方案
  • 主机的克隆,但Github是repo
  • “我的主文件夹”是一个“TFS解决方案”,它生活在自己的生态系统中,有自己的内部用户,而克隆“Github”则有自己的外部用户和自己的生态系统

    使用此脚本,我的目标是使克隆repo保持最新状态,并对主副本进行最新更改

    主机进行更改-->克隆文件发生的更改将得到更新

    重要的是,每次我做更改时,不要盲目地将整个文件夹从主文件夹剪切粘贴到克隆文件夹,这是我制作的脚本,目前运行良好,但我想知道我的逻辑是否有漏洞,谢谢

    #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回购与TFS本机同步?我没有任何TFS经验

    另一种处理方法是将
    C:\Users\Clone\*.
    的内容压缩到一个时间戳文件(例如:OldFiles\u changed\u 01\u 2018\u 10\u 42\u am.zip)中,然后复制到新修改的repo上-这样,每次更改都会在
    C:\Users\Clone\
    中有历史副本。。(不过,这有点多余,因为您在前端使用Git)


    至于“最佳实践”——这些天来基本上只是指“安全性”——在我看来很好。就“实践”而言,这才是最适合您的场景的。。如果每次发生更改时都不需要*.zip备份,那么您的原始脚本看起来是可靠的。

    那么
    robocopy
    和镜像
    /mir
    选项呢?@LotPings您能提供一个您可以推荐的示例用例吗?我不熟悉机器人技术,谢谢@LotPings我在寻找一个比谷歌更具体的答案,如果你是专家,我希望你能分享一些知识。我从
    robocy“C:\Data\Master”“C:\Users\Clone”*/mir/XD“\obj\Release”/L开始,/L将只记录将被复制的内容。感谢你建议进行备份,当更新发生时,真正理想的解决方案是双向(主-->clone)和(克隆-->Master)解决方案。仍然在看tho!是的,这听起来像是一个艰难的场景!如果我是你,我会把研究重点放在一些本地同步Git/TFS的方法上,反之亦然。干杯另外,
    robocopy
    笨重,不是你想要的。您最好使用一些同步文件的第三方工具,如DirSync Pro: