2014-04-09 51 views
0

我需要查看兩個流之間添加或刪除了哪些文件。最明顯的方式是每個流中的「git lsfiles」。除了這不是GIT,我沒有看到類似的命令。因此,對於今天:AccuRev:你如何列出託管文件?

for f in $(find * -type f);do 
    accurev stat "$f" 
done | \ 
    fgrep -v '(external)' | \ 
    awk '{print $1}' > .list 

如果有更好的辦法,應該是清晰,容易在這裏找到:

http://www.accurev.com/download/docs/5.7.0_books/AccuRev_5_7_User_CLI.pdf 

,但事實並非如此。幫幫我?謝謝。

回答

0

既然這兩個答案都沒有解決這個問題,我最終制定了一個腳本來完成真正需要的。 「accurev lsfiles」是非常需要的。

#! /bin/bash 

declare -r progpid=$$ 
declare -r progdir=$(cd $(dirname $0) >/dev/null && pwd) 
declare -r prog=$(basename $0) 
declare -r program="$progdir/$prog" 
declare -r usage_text=' [ <directory> ... ] 
If no directory is specified, "." is assumed' 

die() { 
    echo "$prog error: $*" 
    exec 1>/dev/null 2>&1 
    kill -9 $progpid 
    exit 1 
} 1>&2 

usage() { 
    test $# -gt 0 && { 
     exec 1>&2 
     echo "$prog usage error: $*" 
    } 
    printf "USAGE: $prog %s\n" "$usage_text" 
    exit $# 
} 

init() { 
    shift_ct=$# 
    tmpd=$(mktemp -d ${TMPDIR:-/tmp}/ls-XXXXXX) 
    test -d "$tmpd" || die "mktemp -d does not work" 
    exec 4> ${tmpd}/files 
    trap "rm -rf '$tmpd'" EXIT 
    prune_pat= 

    while : 
    do 
     test $# -eq 0 && break 
     test -f "$1" && break 
     [[ "$1" =~ -.* ]] || break 
     case "X$1" in 
      X-p) 
       prune_pat+="${2}|" 
       shift 2 || usage "missing arg for '-p' option" 
       ;; 

      X-p*) 
       prune_pat+="${1#-p}" 
       shift 
       ;; 

      X-x*) 
       set -x 
       tput reset 1>&2 
       PS4='>${FUNCNAME:-lsf}> ' 
       shift 
       ;; 

      X-*) 
       usage "unknown option: $1" 
       ;; 

      *) 
       break 
       ;; 
     esac 
    done 

    ((shift_ct -= $#)) 
    test ${#prune_pat} -gt 0 && \ 
     prune_pat='(^|/)('${prune_pat%|}')$' 
} 

chkdir() { 
    declare list=$(exec 2> /dev/null 
     for f in "[email protected]" 
     do ls -d ${f}/* ${f}/.* 
     done | \ 
      grep -v -E '.*/\.\.*$') 

    for f in $(accurev stat ${list} | \ 
     grep -v -F '(external)' | \ 
     awk '{print $1}' | \ 
     sed '[email protected]^/*\./@@') 
    do 
     test ${#prune_pat} -gt 0 && [[ $f =~ ${prune_pat} ]] && continue 

     if test -d "$f" 
     then chkdir "$f" 
     elif test -f "$f" -o -L "$f" 
     then echo "$f" 1>&4 
     fi 
    done 
} 

init ${1+"[email protected]"} 
((shift_ct > 0)) && shift ${shift_ct} 
test $# -eq 0 && set -- . 
chkdir "[email protected]" 
exec 4>&- 
sort -u ${tmpd}/files 

這是有點過分了,但我有一個我總是用我的腳本的樣板。

0

如果你想看到兩個流之間的差異,運行以下命令:AccuRev的差異-a -v「流1」 -V「流2」

+0

不,謝謝。我想知道哪些文件已被添加或刪除。謝謝。 –

+0

這個差異將顯示哪些文件在一個流而不是其他,IE添加/刪除。如果您將stream添加到stream1並在stream2中禁用了bar,diff將反映stream2中丟失的foo和stream1中丟失的bar。 – jstanley

+0

是的,但它也與實際的逐行差異混雜在一起。我可以用一些seddery提取添加/刪除的文件。我認爲它歸結爲accurev人的RFE,因爲我沒有看到簡單的方法。無論如何,謝謝你的建議。 :) –

0

在命令行的問題已經回答了,這裏是如何通過AccuRev GUI進行同樣的操作。

  1. 選擇一個動態流,工作區或快照。
  2. 右鍵單擊並選擇「按文件顯示差異」
  3. 選擇不同的動態流,工作區或快照。

    您將看到兩個選項之間不同的文件列表,您可以在動態流,工作區和快照之間進行混合搭配。

    然後,您可以選擇任何文件並選擇「顯示差異」以查看兩個文件之間的差異。

+0

我在添加的文件列表和刪除的文件列表(存在於一個流中,但不存在其他文件)之後。 –