2012-06-15 3 views
2

주어진 파일의 행 범위 내역을 탐색하는 데 도움이되는 확장 프로그램이나 도구가 필요합니다. 특정 함수의 역사를보고 싶습니다. 현재는 [start, end] 행에 있습니다. HG의 주석 날 시작 얻을 :이 방법파일의 행 범위에 대한 log/diff를 수정하십시오.

AAA 772 06-Aug-02: void Graphics2DDXF::lineTo(double x, // the x coordinate 
AAA 772 06-Aug-02:       double y // the y cooordinate 
AAA 772 06-Aug-02:       ) 
AAA 772 06-Aug-02:  { 
BBB 2034 30-Aug-04:  LOG; 
BBB 6989 05-Dec-11: 
BBB 4638 31-Oct-07:  transform_->transform(&x,&y); 
AAA 772 06-Aug-02: 
BBB 7011 06-Jan-12:  AGcRoot<Line> line = gcnew Line; 
BBB 6989 05-Dec-11: 
BBB 6989 05-Dec-11:  Point3d startPoint(lastPenLocation_->x(), lastPenLocation_->y(), 0.0); 
BBB 6989 05-Dec-11:  Point3d endPoint(x, y, 0.0); 
BBB 6989 05-Dec-11:  line->StartPoint = startPoint; 
BBB 6989 05-Dec-11:  line->EndPoint = endPoint; 
BBB 6989 05-Dec-11: 
BBB 4638 31-Oct-07:  lastPenLocation_ = APoint2D::New(x,y,AToleranceID::None); 
BBB 7011 06-Jan-12: 
BBB 7011 06-Jan-12:  setAndAddEntity(line); 
AAA 772 06-Aug-02:  } 

마지막 변화는 내가 'HG DIFF -c7011'와 그것을 검사 할 수 있습니다 7011. 변경 집합이었다.

어려운 부분은 그 전에 발생했습니다. 7011-1에 대한 주석을 출력 시작 :

% hg annotate -r7010 file.cpp 
... 
AAA 772 06-Aug-02: void Graphics2DDXF::lineTo(double x, // the x coordinate 
AAA 772 06-Aug-02:       double y // the y cooordinate 
AAA 772 06-Aug-02:       ) 
AAA 772 06-Aug-02:  { 
BBB 2034 30-Aug-04:  LOG; 
BBB 6989 05-Dec-11: 
BBB 4638 31-Oct-07:  transform_->transform(&x,&y); 
AAA 772 06-Aug-02: 
BBB 6989 05-Dec-11:  Line^ line = gcnew Line; 
AAA 772 06-Aug-02:  addEntityToModelSpace(line); 
AAA 772 06-Aug-02: 
AAA 772 06-Aug-02:  ensureLayerAvailable(); 
BBB 6989 05-Dec-11:  line->LayerId = s_currentLayerObjectId; 
BBB 6989 05-Dec-11: 
BBB 6989 05-Dec-11:  Point3d startPoint(lastPenLocation_->x(), lastPenLocation_->y(), 0.0); 
BBB 6989 05-Dec-11:  Point3d endPoint(x, y, 0.0); 
BBB 6989 05-Dec-11:  line->StartPoint = startPoint; 
BBB 6989 05-Dec-11:  line->EndPoint = endPoint; 
BBB 6989 05-Dec-11: 
BBB 6989 05-Dec-11:  line->LinetypeId = currentLinetypeId(); 
BBB 6989 05-Dec-11:  line->ColorIndex = dwgColor(getColor()); 
BBB 4638 31-Oct-07:  lastPenLocation_ = APoint2D::New(x,y,AToleranceID::None); 
AAA 772 06-Aug-02:  } 

것은 그래서 지금은 라인의 범위에 영향을 미치는 이전 변경 집합은 6989. 등등 것을 볼 수 있습니다.

이 이런 짓을 시각적 도구를 가지고 좋은 것입니다,하지만 난 그냥 나에게 변경 집합의 순서 준 뭔가에 만족하실 것입니다 : 7011, 6989을, 등

그것은 하드되지 않을 것 linenumber 범위에 대한 주석 출력을 필터링하고 최대 변경 집합 번호를 찾습니다. 어려운 점은 추가 또는 제거 된 라인을 고려하여 라인 범위를 조정하는 것입니다. 특히 'diff'가 변경 사항이 라인 범위의 최소 또는 최대에 걸쳐 있다고 주장 할 때 그렇습니다. 적어도 CVS diff 출력에는 어려웠으나 hg diff 출력으로 시도하지 않았습니다. 내가 꿈을 꾸고있어 도구/확장이 존재하지 않는 경우

, 수정 된 줄 번호를 계산하는 적어도 어떤 도구가 있습니까?

감사합니다,

+1

단일 파일의 기록을 분석하기 위해 TortoiseHg를 사용합니다. 특정 리비전에서 주석이 달린 버전의 파일로 시작한 다음 파일 기록으로 전환하고 DAG로 이동합니다. 당신이 원하는대로 자동화되지는 않지만 트릭을 수행합니다. – Helgi

답변

0

그것은 그것을 위해 만들어지는 것이 아니다,하지만 당신은 정규 표현식에서 아무것도을 의미 .를 검색 할 hg grep를 사용하여 그 값의 근사값을 계산할 수 있습니다. +이 선을 의미

[email protected]:~/projects/unblog$ hg grep --all --user --date . config.yaml 
config.yaml:79:-:ry4an-hg:Mon Apr 23 22:45:24 2012 -0400:TAGLINE: I think in a monospaced font. 
config.yaml:79:+:ry4an-hg:Mon Apr 23 22:45:24 2012 -0400:TAGLINE: A blog about software, projects, and other little things I build. 
config.yaml:52:-:ry4an-hg:Sat Apr 30 11:25:08 2011 -0500:AUTHOR: Ry4an Brase 
config.yaml:52:-:ry4an-hg:Sat Apr 30 11:25:08 2011 -0500:#DISQUS: rafaelmartins-en 
config.yaml:52:-:ry4an-hg:Sat Apr 30 11:25:08 2011 -0500:TIMEZONE: UTC 
config.yaml:52:+:ry4an-hg:Sat Apr 30 11:25:08 2011 -0500:#POSTS_PER_PAGE: 10 
config.yaml:52:+:ry4an-hg:Sat Apr 30 11:25:08 2011 -0500:AUTHOR: Ry4an Brase 
config.yaml:52:+:ry4an-hg:Sat Apr 30 11:25:08 2011 -0500:#DISQUS: your-disqus-id 
config.yaml:52:+:ry4an-hg:Sat Apr 30 11:25:08 2011 -0500:TIMEZONE: UTC 
config.yaml:0:+:ry4an-hg:Sat Jan 22 22:51:22 2011 -0600:TITLE: Ry4an's Unblog 
config.yaml:0:+:ry4an-hg:Sat Jan 22 22:51:22 2011 -0600:TITLE_HTML: Ry4an's Unblog 
config.yaml:0:+:ry4an-hg:Sat Jan 22 22:51:22 2011 -0600:TAGLINE: I think in a monospaced font. 
config.yaml:0:+:ry4an-hg:Sat Jan 22 22:51:22 2011 -0600:AUTHOR: Ry4an Brase 
config.yaml:0:+:ry4an-hg:Sat Jan 22 22:51:22 2011 -0600:#DISQUS: rafaelmartins-en 
config.yaml:0:+:ry4an-hg:Sat Jan 22 22:51:22 2011 -0600:TIMEZONE: UTC 

을 첨가하고 -가 제거되었음을 의미 : 즉,이처럼 출력을 얻을 수 있습니다. --all 옵션은 행당 가장 최근의 일치뿐만 아니라 모든 일치를 표시한다는 것을 의미합니다.

+0

'hg grep'은 도움이되지 않습니다. 나는 정규 표현식을 포함하는 변경을 찾고 있지 않다. ** line 범위 내에서 발생하는 ** ** 변경을 원합니다. –

+0

맞습니다.하지만 그 정규 표현식'.' (모든 것)을 만들고'--all'을 전달하면 해당 파일의 모든 버전에있는 모든 행에 모든 변경 사항이 적용됩니다. 불완전하지만, 얻을 수있는 최선의 방법입니다. –