2014-02-12 5 views
0

병합 및 차이 히스토리에 문제없이 유지 관리/올바른 형식의 코드를 어떻게 관리합니까?SVN 파일 및 형식이 지정된 파일 간의 커미트 및 차이점

예 : 나는 같은 잘못된 형식으로 저장소에서 아주 오래 된 파일이 :

/** 
* Old code 
*/ 
public static void main(String[] args) 
{ 
    for (int i=0;i<10;i++) {System.out.println(i);} 
} 

다음 난의 코드 포맷 : 나는 저장소에이 코드를 비교하면

/** 
* Formatted code (ctrl-shift-f in Eclipse) 
*/ 
public static void main(String[] args) { 
    for (int i = 0; i < 10000; i++) { 
     System.out.println(i); 
    } 
} 

, 나는 볼을 많은 변화와 나는 실제 차이점을 보지 못한다. (나는 한계 10을 10000으로 바꾼다.)

"형식 코드"와 "활동 코드"간의 버전 관리는 어떻게 관리합니까?

답변

0

그렇지 않습니다. Subversion은 프로그래밍 언어 또는 컨텍스트를 이해하지 못합니다. 단지 파일이 변경된 것으로 인식합니다. 코드를 다시 포맷하면 많은 부분이 변경됩니다. 옵션 :

  1. 당신의 코드가 아닙니다 이제까지 자동 포맷
  2. 항상 자동 포맷 코드를 수행, 새 파일을 그것으로
  3. 거래를 만드는 순간부터.
0

이와 비슷한 것을 처리하려면 실제로 언어를 이해하는 도구가 필요합니다. 버전 제어 시스템은 일반화되고 언어가 중요하지 않도록 설계 되었기 때문에 이러한 기능을 포함하지 않습니다 (언어는 이진 데이터가 아닌 텍스트에 있다고 가정).

제가 알고있는 유일한 도구는 SemanticMerge입니다. 이 시점에서 C#과 Java에 대해서만 알고 있습니다. 내장 된 병합을 대체하기 위해 버전 제어 시스템으로 구성 할 수 있습니다.

하나의 제안은 형식과 기능 변경을 섞어서는 안된다는 것입니다. 당신이 기능적인 변화와는 별도의 커밋으로 그것을 다시 포맷하고 싶다면. 일반적으로 커밋 메시지에 기능 변경이 없다는 내용의 메모로 이러한 변경 내용을 커밋합니다. 이렇게하면 변경 사항에 따라 다르게 동작해야하며 병합 변경시 오류가 발생한다는 사실을 사용자가 알 수 있습니다.

관련 문제