문제

내가 사용하여 CVS 후 병합,나는 수백의 충돌이 발생합니다.없음의 충돌하는 문제점(그들은 중요하지 않은 결과로 변경의 키워드로 확장 차이에서 트렁크와점).

나는 알고 없이 변경되었는 파일로 이것은 단순히 병합의 공급업체는 지점으로 트렁크가 있습니다.몇 개의 파일이 무작위로 검사하여 이를 증명합니다.

이 있는 빠른 방법으로 해결하는 모든 충돌하지 않고 각각의 하나로 이동합니다.(나는 TortoiseCVS,WinCVS 와 명령행에서 내 처분).

도움이 되었습니까?

해결책 3

나는 내 자신의 질문에 대답으로 이맥스 솔루션을 제안해 제섭했용에 대한 사람을 사용하지 않는 이맥스에서 15 년!

내 경우에,알고 있기 때문에 나는 유일한 충돌에서의 확장$로그$키워드 그리고 나는 정말 못 콘텐츠에 대한 관심의합니다.나는 두 개의 가능한 솔루션:

  1. 다시 가져오는 공급업체의 원본을 보장하는 키워드는 확장이 장애인하고 다시 실행합니다.

  2. 용감하고 복사의 모든 공급업체를 통해 파일을 파일을 충돌(따라서 충돌을 해결하).내 경우에는,내가 알고 있는 것도 없었음을 변경한 내용이 없었 위험 옵션입니다.

함께 갔 2.규칙 기반을 사용하여 비교 BeyondCompare 확인된 모든 파일만 했다'중요하지 않은'변경합니다.

다른 팁

을 할 수 있는 병합 again?

cvs 업데이트-kk

기 전에 병합하지 않을 것이 확장하는 키워드가 있습니다.
유일한 키워드는 것이 문제입니$중 하나가 기록

할 수 있는 프로그램 매크로에서 그것을 할 Emacs 없이 너무 많은 문제가-만약 당신이 사용하는 이맥스/elisp 경우,또는 당신은 아마 그것을 할 수 없이 elisp 키보드를 사용하는 매크로에서 emacs,다음 사용하^u^u^u^u^u^x^e(반복 키보드 매크로(^x^e)1024 번;각^u 증가 계산에 의해 4x).매크로 될 것이 단순 반복의 명령을 해결하기 위해 필요한 하나의 충돌에서 파일입니다.당신은 또한 부하는 모든 파일을 충돌로 버퍼,다음 사용하 elisp 또는 어쩌면 키보드의 매크로 충돌을 해결하려면 다음을 전환하여 다음 버퍼,반복합니다.

나는 놀라지 않을 것이면 거기에는 쉬운 방법이지만,이동합니다.고 있는 경우에도로드하는 모든 파일을 buffers 및 실행 후 키보드의 매크로,당신은 인는 수에 상대적으로 짧은 시간입니다.

사-emacs:

cvs status | grep conflict >/tmp/foo;
load /tmp/foo into an emacs buffer
edit buffer to remove all but the file/pathnames (use keyboard macros!)
load them all into buffers:
^x^(        (start-macro)
^@^e        (mark (or control-space), then end-of-line)
ESC-w       (copy)
^n^a        (next-line, beginning of line (set up for next iteration))
^x^f        (load-file)
^y          (yank saved)
<RETURN>    (load it - you could resolve conflicts right here and save)
^xb         (switch to buffer)
foo<RETURN> (go back to foo)
^x^)        (end macro)
^x^e        (repeat macro once) or
^u^u^u^u^u^x^e (repeat macro 1024 times or until BEEP)

이제 당신은 모든 수백 개의 파일을 참고 버퍼,당신은 설정할 수 있습니다 매크로 잡아 다음 완충기,충돌을 해결하고,저장-반복음 매크로 N 다.

여기에는 C++프로그램을 썼습니다.그것은 컴파일을 Visual Studio2008 익스프레스,아마도 다른 모든 컴파일러입니다.

이 입력 출력을 리디렉션을 통해는 아마 그렇지 않은 편리하지만,작성할 수 있습니다 cmd 파일을 전화 등

@echo off
copy /y %1 \temp\t
resolve %2 %3 < \temp\t > %1
del \temp\t

코드

// resolve.cpp
#include "stdafx.h"
#include "string.h"

int main(int argc, char* argv[])
{
    const int MAXWIDTH = 10000;
    char line[MAXWIDTH];

    enum { ECHO, OLD, NEW, ERROR };

    int state = ECHO;
    int num = 0;
    int quiet = 0;
    int pick = OLD;

    for (int i = 1; i < argc; ++i)
    {
        if (!strcmp(argv[i],"-h") || !strcmp(argv[i],"--help") || !strcmp(argv[i],"?"))
        {
            printf("Automatically fix CVS merge conflicts.\n"
                "Options:\n"
                " -n use the bottom code, the new code (default uses top, old code).\n"
                " -q quiet\n"
                " -h help\n"
                "use stdin and stdout for input/output and stderr for status.");
            return 0;
        }
        else if (!strcmp(argv[i],"-n"))
        {
            pick = NEW;
        }
        else if (!strcmp(argv[i],"-q"))
        {
            quiet = 1;
        }
        else
            fprintf(stderr,"unknown option %s\n",argv[i]);
    }

    while (fgets(line, MAXWIDTH, stdin))
    {
        // trim trailing whitespace
        for (int i = strlen(line); i >= 0 && line[i] < ' '; --i) 
            line[i] = 0;

        ++num;
        if (!strncmp(line,"<<<<<<< ",8))
        {
            state = (state==ECHO) ? OLD : ERROR;
            if (!quiet)
                fprintf(stderr,"At line: %d\n", num);
        }
        else if (!strcmp(line,"======="))
        {
            state = (state==OLD) ? NEW : ERROR;
        }
        else if (!strncmp(line,">>>>>>> ",8))
        {
            state = (state==NEW) ? ECHO : ERROR;
        }
        else
        {
            if (state == ECHO || state == pick)
                printf("%s\n",line);
            if (!quiet && state != ECHO)
                fprintf(stderr,"%c%s\n", (state==pick) ? '+' : '-', line);
            continue;
        }
        if (!quiet)
            fprintf(stderr,"%s\n",line);
    }
    return 0;
}

면책 조항:지 확인할 수 있습의 출력 합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top