2016-12-15 57 views
0

我想在發佈新版本之前檢查是否有人修改了我的文件(同事 - >修補程序或黑客 - >破解)。 是否有可能通過git status在capistrano發佈中看到更改的文件?如何在capistrano發行版中看到修改的文件?

$ ls -l 
total 21692 
lrwxrwxrwx 1 user www-data  55 Dec 14 14:31 current -> /path/to/my/releases/20161214132953 
drwxr-xr-x 7 user www-data  4096 Dec 14 14:31 releases 
drwxr-xr-x 7 user www-data  4096 Aug 18 14:05 repo 
-rw-r--r-- 1 user www-data 121235 Dec 14 14:31 revisions.log 
drwxr-xr-x 5 user www-data  4096 Dec 8 2014 shared 
$ cd current 
$ git status 
fatal: Not a git repository (or any of the parent directories): .git 
$ cd ../repo 
$ git status 
fatal: This operation must be run in a work tree 

回答

2

有一種方法可以做到,儘管它並不明顯。

首先,使用tail revisions.log來查找用於該版本的Git commit SHA。

$ tail -n1 revisions.log 
Branch master (at 66ba18ca4f689a7e9fdc9a45ba3c952785620157) deployed as release 20161214132953 by mbrictson 

下一步,進入到repo目錄,並使用git archive命令來創建存儲庫的原始快照存在在那個承諾。

$ mkdir -p /tmp/pristine-release 
$ git archive 66ba18ca4 | tar -x -f - -C /tmp/pristine-release 

現在你可以使用diff看到的差異:

$ diff -r /tmp/pristine-release /path/to/releases/20161214132953 

如果你想忽略通過.gitignore您可以使用下面的命令文件:

rsync \ 
    -vanc\ 
    --no-links \ 
    --no-group \ 
    --no-owner \ 
    --no-perms \ 
    --no-times \ 
    --delete \ 
    --filter="dir-merge,- .gitignore" \ 
    /path/to/current/ \ 
    /tmp/pristine-release \ 
    | head -n -3 \ 
    | tail -n +2 \ 
    | grep -v 'skipping non-regular file' 

--filter="dir-merge,- .gitignore"讀取和使用gitignore
| head -n -3刪除rsync foote [R
| tail -n +2刪除rsync的頭
| grep -v 'skipping non-regular file'將刪除列表

跳過的文件
相關問題