2010-11-24 4 views
4

단순히 파일에서 이동 한 행을 '필터 아웃'할 수 있도록 git diff와 함께 사용할 스크립트를 개발 중입니다. Visual Studio 2008은 Designer 파일 작업시 어려움을 겪고 있습니다. 때로는 전체 파일을 다른 순서로 다시 쓰는 것을 주장하는 것처럼 보입니다. 이로 인해 파일의 실제 변경 사항을 확인하기가 어려워집니다. git diff의 출력을 조정하기 위해 git diff를 스크립트에 파이핑하고 있습니다. 출력에서 행을 제거 할 수도 있고, +/-를 다른 기호로 바꿀 수도 있습니다. 그러나 사용할 심볼을 모르겠습니다.Git Diff - 라인 이동을 표시합니다.

+2

나는이 사업에 관심이 있지만, 거기에 질문을 찾는 데 어려움을 겪고있다. 정확히 무엇을 요구하고 있습니까? – grossvogel

+0

질문은 나에게 분명하지 않습니다. 일반적으로 이동 된 줄을 필터링하는 방법을 묻는 경우 이미 http://stackoverflow.com/questions/1380333/highlighting-added-deleted-lines-ignoring-moves-in-a-patch-asp에서 물어 보았습니다. 파일 –

답변

0

이 질문에 대한 대답이 아니라 설명 된 문제에 대한 가능한 대안입니다.

Visual Studio 2008 또는 Designer 파일에 익숙하지 않지만 다른 프로그램에서 생성 된 파일을 git에 저장하려는 솔루션을 실행했습니다. 일부 파일의 줄 순서는 전혀 중요하지 않습니다. 다른 파일에서는 순서가 중요하지 않지만 중첩 된 데이터 구조가 포함되어 있기 때문에 간단한 정렬이 부적합합니다.

내 솔루션은 커밋되기 전에 파일 내용을 변경하는 git 필터를 사용하는 것이 었습니다. 이것은 두 부분으로 구성됩니다. 먼저 .gitattributes 파일을 사용하여 파일에 필터를 지정해야합니다.

*.list  filter=sort 

다음은 필터의 동작을 구성 파일에 정의해야합니다. 이 작업은 사용자 설정 ~/.gitconfig 또는 repos 구성 .git/config에서 수행 할 수 있습니다. 이것은 로컬 전용이며 자동으로 repo의 일부로 다른 사람들과 공유되지 않으므로 다른 사람들도이 작업을 수행하기를 원할 경우 알려야합니다.

[filter "sort"] 
    clean = sort 
    smudge = cat 

이 간단한 필터의 결과는, 파일 대신 그들을 만든 프로그램에서 임의의 순서로되는 라인의 REPO하기 위해 최선을 다하고 때, 그들은 영숫자 및 추가, 제거 만 분류 된 것이 었습니다 차이점에 변경 사항이 나타났습니다.

이제 저는 두 가지 파일 유형이 두 가지로 작동한다는 것을 언급했습니다. 하나는 단순한 것이고 다른 하나는 복잡한 것입니다. 중첩 된 데이터 타입 (Lua 테이블이 특정 임)을 포함하고있는 복잡한 것에 대해서는, 파일 내용을 읽고, 중첩 된 각 섹션을 정렬하고, 동작을 변경하지 않고 정렬 된 결과를 출력하는 스크립트를 (다른 사람의 도움으로) 만들었습니다 나중에 데이터가 사용될 때.