2014-04-09 4 views
0

2 개의 스트림간에 어떤 파일이 추가 또는 제거되었는지 확인해야합니다. 가장 확실한 방법은 각 스트림에서 "git lsfiles"입니다. 이것을 제외하고는 GIT가 아니며 비슷한 명령을 보지 못합니다. 오늘 그래서 :AccuRev : 어떻게 관리 파일을 나열 하시겠습니까?

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

를하지만되지 않습니다 : 더 좋은 방법이 있다면

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

, 여기 찾을 명확하고 쉬워야한다. 도움? 고맙습니다. 다음 명령을 실행, 두 개의 스트림 사이의 차이를 확인하려면

답변

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 "Stream2"

+0

아니요, 감사합니다. 어떤 파일이 추가 또는 제거되었는지 알고 싶습니다. 고맙습니다. –

+0

이 diff는 하나의 스트림에있는 파일과 IE가 추가/제거 된 파일을 표시합니다. foo를 stream1에 추가하고 stream2에서 bar를 제거하면 diff는 stream2에없는 foo와 stream1에없는 bar를 반영합니다. – jstanley

+0

예,하지만 실제 줄 단위 차이로 인해 어수선하게 쌓여 있습니다. 추가/제거 된 파일을 일부 seddery로 추출 할 수 있습니다. 나는 그것이 단순한 방법을 보지 못해서 accurev 사람들에게 RFE로 귀결된다고 생각합니다. 어쨌든 귀하의 제안에 감사드립니다. :) –

0

을 여기에 방법입니다 AccuRev GUI를 통해 동일한 작업을 수행하십시오.

  1. 동적 스트림, 작업 영역 또는 스냅 샷을 하나 선택하십시오.
  2. 오른쪽 버튼을 클릭하고 "파일 별 차이 표시"를 선택하십시오.
  3. 다른 동적 스트림, 작업 영역 또는 스냅 샷을 선택하십시오.

    두 가지 선택 항목간에 다른 파일 목록이 표시되며 동적 스트림, 작업 영역 및 스냅 샷간에 혼합 및 일치시킬 수 있습니다.

    그런 다음 파일을 선택하고 "차이 표시"를 선택하여 두 파일 간의 차이점을 볼 수 있습니다.

+0

추가 된 파일 목록과 제거 된 파일 목록 (한 스트림에는 있지만 다른 스트림에는 없음)이 있습니다. –