Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 查看bat文件中的特定文件夹。自动提交和推送代码_Git_Powershell_Windows 10_File Watcher - Fatal编程技术网

Git 查看bat文件中的特定文件夹。自动提交和推送代码

Git 查看bat文件中的特定文件夹。自动提交和推送代码,git,powershell,windows-10,file-watcher,Git,Powershell,Windows 10,File Watcher,我正在使用powershell代码查看特定文件夹。但是我怎样才能转义一些文件夹,比如.git文件夹和log.txt文件呢?就像我正在监视所有更改并在这个名为“test”的文件夹中创建事件一样。但每当我保存某个内容时,就会发生更改事件,它会提交并将其推送到bitbucket。同时.git文件夹也会因为提交和推送而触发更改事件。这就产生了循环 这是我的密码: ### SET FOLDER TO WATCH + FILES TO WATCH + SUBFOLDERS YES/NO $w

我正在使用powershell代码查看特定文件夹。但是我怎样才能转义一些文件夹,比如.git文件夹和log.txt文件呢?就像我正在监视所有更改并在这个名为“test”的文件夹中创建事件一样。但每当我保存某个内容时,就会发生更改事件,它会提交并将其推送到bitbucket。同时.git文件夹也会因为提交和推送而触发更改事件。这就产生了循环

这是我的密码:

    ### SET FOLDER TO WATCH + FILES TO WATCH + SUBFOLDERS YES/NO
    $watcher = New-Object System.IO.FileSystemWatcher
    $watcher.Path = "path of test folder"
    $watcher.Filter = "*.*"
    $watcher.IncludeSubdirectories = $true
    $watcher.EnableRaisingEvents = $true  

    ### DEFINE ACTIONS AFTER AN EVENT IS DETECTED
    $action = { 
    $path = $Event.SourceEventArgs.FullPath
    $changeType = $Event.SourceEventArgs.ChangeType
    $logline = "$(Get-Date), $changeType, $path"
    Write-Host $path
    if ($path -contains '\.git\') { 

    }
    else{
    Add-content "\log.txt" -value $logline
cd test
    git add .
    git commit -am "made auto changes"
    git push origin master
    }
    }    
    ### DECIDE WHICH EVENTS SHOULD BE WATCHED

    Register-ObjectEvent $watcher "Created" -Action $action
    Register-ObjectEvent $watcher "Changed" -Action $action
    Register-ObjectEvent $watcher "Deleted" -Action $action
    Register-ObjectEvent $watcher "Renamed" -Action $action
    while ($true) {sleep 5}

您有几个选项可以根据示例筛选字符串(所有这些选项都假定
$path
[System.string]
类型,而不是
[System.IO.FileInfo]
[System.IO.DirectoryInfo]
):

Regex

if ($path -notmatch '\\\.git\\') {
字符串。包含

if (-not $path.Contains('\.git\') {
通配符

if ($path -notlike '*\.git\*') {

还有一个问题,我正在观看创建和更改事件。保存任何文件后,它会运行两次。有什么方法可以防止这种情况发生吗?@Picksrabhakar为不同的事件创建不同的操作。