2014-01-29 5 views
6

원격 자식 저장소에서 최신 자식 태그을 얻어야합니다. I 출력원격 자식 저장소에서 최신 자식 태그 찾기

c8be4313ae8261214acb6d3d41f9ece8d47a4ad5 refs/tags/v0.2.1 
9e776cff51a8bb15f0539b852a819723d1e37c69 refs/tags/v0.2.2 
ee1f173f4e7da0996af9f7c91e0952bec8c2358b refs/tags/v0.1.3 
5d6777bf2b2e5bae41ae9ab966320c691c1f2ee2 refs/tags/v0.1.4 
6d3040673330ed763bc0c1a6e6cd5dbc82392d4f refs/tags/v0.1.5 
4afd29dc48805053be911a85c6da6b195e96e786 refs/tags/v0.1.6 
8d5cc76d50b153f836561bb933b1f5ad488748d1 refs/tags/v0.1.7 
1c0cdebaed828aaef2897c9240b4440898f70766 refs/tags/v0.1.8 
683de590ba8d633c801d2628f4d9de58f9de371a refs/tags/v0.1.9 
925797f07cfc94a3af1f56cdabd856e11b222b78 refs/tags/v0.1.10 

다음이 나에게주는 최신 태그

git ls-remote --tags [email protected]:xxxx.git |grep "\."|grep -v -|grep -v {| sort -n -t. -k3 -k4 

을 찾는 명령을 다음 사용했습니다하지만 최근 생성 된 v0.2.2을 찾을 수있다. 최근에 생성 된 태그 (최신 만든 날짜가있는 태그)는입니다. 그것을 할 다른 방법이 있습니까?

자식은 두 종류의 태그가 않습니다 : 가볍고 주석을 단 경우에 당신이 정말로 마지막 태그를 생성해야 어쨌든

git describe --tags --abbrev=0 

:

+0

왜 v0.2.2가 목록의 첫 번째가 아닌지 생각하십니까? – greg0ire

+0

나는 그것에 관해 모른다. – Shrikant1712

+0

야생 추측을 만들어 봅시다. 이전에 생성되었을 수도 있습니다. 그것을 확인할 수 있습니까? – greg0ire

답변

8

당신은 아마 만든 최신 태그 도달하지 최신 태그를 필요 . 태그가 가볍고 힘든 행운이라면 만들 수 없습니다. 생성 날짜는 추적되지 않습니다. 원격 저장소가 저장된 파일 시스템에 액세스 할 수있는 경우/refs/tags 파일의 타임 스탬프를 확인해 볼 수 있습니다. 그러나이 정보는 반드시 정확하지는 않습니다.이 정보는이 특정 저장소에서 태그 파일을 생성 한 타임 스탬프입니다.

그러나 주석이 달린 태그의 경우 생성 날짜를 얻을 수 있습니다. 당신이 (LS-나무 또는 다른 방법으로) 샤을 일단 실행 :

git cat-file -p <sha> 

단순히 술래, 메시지 작성 날짜를 표시 :

git show <sha> 

를 추가로도 커밋 참조 표시합니다.

스크립트에서이 정보를 사용하면 가능합니다 (날짜 형식으로 인해 별다른 문제가 아닐 수도 있음).

태그에 대한 내부 설명을 참조 하겠지만이 정보는 모두 ProGit, Git Basics - Tagging에 설명되어 있습니다.

git rev-list --tags --timestamp --no-walk | 
    sort -nr | 
    head -n1 | 
    cut -f 2 -d ' ' | 
    xargs git describe --contains 

: 명령 줄에서이 작업을 실행 한 후

git fetch --tags 

그리고 :

+0

가벼운 태그는 어렵다는 것이 맞습니다. 그래서 나는 그것에 대해 주석이 달린 태그를 이미 사용했다. – Shrikant1712

1

가정 당신이 당신의 태그를 최신으로되어 있는지 확인 할 수 있습니다, 로컬이 결정하게 허용 위의 git rev-list 명령은 위의 명령에서 모든 태그에 대한 커밋을 표시하며, --timestamp은 커밋의 타임 스탬프가 각 행의 접두사로 사용됩니다. --no-walk 옵션은 rev-list에 상위 커밋을 나열하지 않기 때문에 출력에 표시되는 커밋 만 태그에 연결된 커밋입니다. sort -nr은 행을 숫자순으로 역순으로 정렬하여 가장 최근의 시간 소인을 가진 확약이 맨 위에 오도록합니다.

:: git rev-list --tags --timestamp --no-walk | sort -nr | head -n1 | cut -f 2 -d ' ' | xargs git describe --contains 
release_1.3.0 

모든 원격으로이 작업을 수행해야하는 경우에, 당신 돈 다음 cut 명령은 우리가 내 파이썬 코 저장소에이 실행 커밋 태그의 커밋 ID,

를 울려 퍼지게 할 수 있습니다,이 얻을 최신 생성 날짜로 선택하는 옵션이 있습니다. 그 정보는 단순히 광고되지 않습니다. 모든 메타 데이터가 객체에 캡처되므로 먼저 객체를 로컬 저장소에 다운로드해야합니다.

+0

나는 당신의 솔루션을 시도해 보았다. 또한 리모컨으로 시도했지만 치명적인 오류가 발생했습니다 : 자식 저장소 (또는 부모 디렉토리 중 하나가 아닙니다) : .git' – Shrikant1712

+1

@ shrikant1712 그 중 하나에 액세스 할 수 없기 때문에 원격으로 작동하지 않습니다. 메타 데이터. 죄송합니다. 원격 솔루션을위한 유일한 유일한 선택은 태그 이름을 구문 분석하는 것입니다. 거기에서 원하는 것을 얻을 수 없다면 단순히 그렇게 할 수 없습니다. 정말로 기술적 인 사람이라면 태그 객체를 가져오고 메타 데이터를 사용하여 원하는 것을 할 수있는 클라이언트를 작성할 수 있습니다. 그러나 쉬운 일은 아닙니다. – jszakmeister

+0

우리는 두 가지 명령을 병합 할 수있는 방법이 있습니다. (내 언급 된 명령과 명령)? – Shrikant1712

-1

eclipse에서 ssh2 네트워크 연결을 통해 dirctly에 액세스하는 가장 좋은 방법.

+0

대답이 더 설명력이 있는지 확인하십시오 ... – Sankarann

+0

힘내 클라이언트를 사용할 수 있습니다. 아주 쉬운 도구 >> – Manish

관련 문제