문제

나는 최근에 작업을 통해 큰스팩터링과 일반적으로 향상을 디자인하십시오.또한,에서 꽤 몇 가지 파일을 제거 했 초과 사용하여 문을,이동 방법으로 비슷한 기능을 가까이 함께 추가되는 지역 등입니다.하지만 실제로 변경된 코드의 기능을 비즈니스 데이터를 전송합니다.

한편,다른 팀에 다른 개발자들은 버그를 수정하고 변화하는 라인의 코드입니다.분명히 할 때 그것에 관해서 병합이 문제가 될 수 있습 때문에 라인의 숫자는 더 이상 일치하고 방법이 있을 수 있습니다.

지금,내가 이해하는 일반 규칙에서 원본을 제어하는 환경 위험할 수 있 이동 방법의 주위에,그리고 우리는 혜택이 중요했다.내가 이해하지 못하는 것은 그런데 왜 그것은 이 방법이 될 수 있습니다.

는 말을 처음 파일 간단한 계산기:

public class Calculator
{
    public int Subtract(int a, int b)
    {
        return a + b;
    }

    public int Add(int a, int b)
    {
        return a + b;
    }
}

기로 결정했다는 내가 원하는 방법을 알파벳:

public class Calculator
{
    public int Add(int a, int b)
    {
        return a + b;
    }

    public int Subtract(int a, int b)
    {
        return a + b;
    }        
}

하는 동안 또 다른 개발자 버그를 수정에서 빼 방법

public class Calculator
{
    public int Subtract(int a, int b)
    {
        return a - b;
    }

    public int Add(int a, int b)
    {
        return a + b;
    }
}

표준 도구를 병합 아마 당신을 필요로 수동으로 병합 이러한 두 개의 파일이 있지만 하는 것 이해 기능 의 코드가 쉽게 조정 수 이러한 두 가지 변경합니다.동일하게 적용하여 제거하는 추가 또는 기타 방법,의견,지역 또는 사용하는 문입니다.

그래서,(마지막으로!) 을 얻는 질문:어떤 병합 공구가 지능적인 이해의 기능 코드 및 병합할 수 있습 두 파일의 위없이 모든 인간의 개입?하지 않을 경우,왜?은 거기에 합병증이 이 문제를 해결 못하는(당연히 그것을 이해하는 것처럼 간단하지 않 나는 암시-그러나 그것은 불가능한 이유는 내가 볼 수 없다?)

내가 사용하여 C#에서 나의 소스 코드 및 사랑이 뭔가와 함께 일하는,그러나 나에 관심이 있는 경우에 이 존재 세계 어디에서나의 프로그램...


나는 이미 정말 걱정 길이에 대해의 이 질문,하지만 편집한 추가 어떻게 예상하는대로 지원하는 시스템이 작동:

초기 계산기의 파일 시스템 상에서 구문 분석 것 파일을 만들고 계층 구조의 클래스:

File: Calculator.cs
|
|--Class[0]: Calculator
    |
    |--Method[0]: Subtract
         |
         |--Line[0]: return a + b;
    |
    |--Method[1]: Add
         |
         |--Line[0]: return a +b;

(추가 줄에 있는 중괄호에 대한 등)

면 확인에 나의 코드(만드는 방법을 알파벳)그것이 업데이트를 계층 위에는 빼기가 방법[1]추가된 방법을[0].

두 번째로 개발자를 확인에 자신의 코드(는 물론 원본 제어 시스템을 알고 있었반의 원본)에 통지를 변화의 첫 번째 라인에서 빼.지금을 찾기보다는 라인 라인에 의해 수에서 전반적인 파일을 알고 있는 그것은 그것을 찾을 수 있습니다.cs/계산기/빼기/0 과는 사실 메소드는 변경된 위치에 상관 없이,그것은 만들 수 있습니다 여전히 병합 작동합니다.

도움이 되었습니까?

해결책

내 생각에는 데이터베이스의 소스 코드 귀하의 질문에 대한 잠재적 답변 중 하나입니다. 일반적인 아이디어는 파일 버전을 사용하지 않으며 버전의 코드 블록이라는 것입니다. 버전 관리 시스템은 코드 DOM에 대해 알고 있으며 Code DOM을 쿼리하여 기능, 클래스, 편집, 컴파일 등을 확인할 수 있습니다.

방법의 순서가 반드시 중요하지 않기 때문에 주문을 염두에두고 데이터베이스에 저장된 것은 아닙니다. 클래스를 확인할 때 가장 좋아하는 순서 (알파벳, 공개/보호/개인 등)를 지정할 수 있습니다. 중요한 변화는 당신이 전환하는 곳과 같은 변화입니다. + a -. 메소드를 재정렬하여 충돌하지 않을 것입니다.

불행히도, SCID는 여전히 매우 젊고 도구가 많지 않습니다. 그러나 코드를보고 편집하는 방식에서 매우 흥미로운 진화입니다.

편집하다: SCID에 대한 또 다른 참조가 있습니다

다른 팁

우리의 접근 방식 플라스틱으로 SCM 은 아직도 멀리서"완전한"이지만,이미 발표에 도움이 될 수 있습니다 이런 종류의 상황에 적합합니다.살펴보 Xmerge.물론 피드백보다 더 많은 것을 환영하고 권한을 부여 일부 무료 라이센스를;-)

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