2017-11-28 1 views
2

나는 힘내와 함께 일하고 있는데, 로컬 저장소에 복제 된 힘내 서버에서 특정 파일의 전체 경로를 얻고 싶다.힘내 원격 저장소에서 파일의 전체 경로를 얻는 방법

예 : 지역의 repo에있는 파일은 다음과 같습니다

https://android.git.sec..../plugins/gitiles/platform/frameworks/av/+/refs/heads/main/o-one/media/libstagefright/CameraSource.cpp 

내가 그렇게 할 수있는 방법 :

/home/.../source/android/frameworks/av/media/libstagefright/CameraSource.cpp 

내가 이런 망할 놈의 서버에서이 파일에 대한 링크를 얻으려면 리눅스에서 Bash 명령어 사용하기

+0

AFAIK 이것은 가능하지 않습니다. 일반적으로 서버에서 사용되는 베어 리포 지 토리에서는 파일에 직접 액세스 할 수 없습니다 (압축되지 않은 경우에는 자세한 내용은 https://git-scm.com/book/en/v2/Git-Internals-Packfiles 참조). . 예를 들어, GitHub과 같은 HTTP (S)를 사용하여 개별 파일에 액세스 할 수있는 Git 서버를 사용하는 경우 응답은 공급 업체별입니다 – Melebius

답변

2

원격 https://github.com 호스트 리포지토리의 용도로 사용되는 긴 사용자 지정 스크립트입니다. 나는 가장자리의 오류가 발생할 가능성이 있기 때문에 곧 수정하겠습니다.

이 작업을하려면 git_relative.sh 파일에 코드 조각을 저장하고 아무 곳에 나 배치하십시오. 이제 ~/ 홈 디렉토리에 배치하십시오.

지금 수정하여 ~/.bashrc 또는 ~/.zshrc 또는 ~/.bash_profile 터미널을 다시 시작하거나이 추가 대응 bash는 스크립트를 실행

이 줄
alias git_remote_path='source ~/git_relative.sh'

를 추가하여. 그런 다음 어떤 자식 저장소에 가서 git_remote_path을 실행하십시오. git 원격 서버의 전체 경로를 출력합니다.

당신이 준 예제는 기존의 github.com과는 다른 원격 URL을 가진 것 같습니다. 이를 위해, 내가 주석에서 지정한 줄만 바꾸면된다.

참고 : 사용자 정의 URL에 대한 경로를 얻으려면 스크립트는, https://github.com 원격 URL에 대한 작동, 당신은 코드 저장소 URL 규칙의 요구에 맞게 조금 수정해야합니다. 한 예가 스 니펫에 주석으로 포함되어 있습니다.

is_git=false 
relative_to_git="" 
check="" 
initial=$(pwd) 
current_dir="" 
count=0 

if [ ! $(git rev-parse --is-inside-work-tree 2> /dev/null) ]; then 
    echo "NOT INSIDE A VALID GIT REPOSITORY" 
    return 
fi 

git_remote=$(git config --get remote.origin.url) 
git_remote=${git_remote%.git} 
git_branch=$(git rev-parse --abbrev-ref HEAD) 

while [ $is_git=true ] 
do 
    if [ -d ".git" ]; then 
    break 
    fi 
    current_dir=${PWD##*/} 
    relative_to_git="$current_dir/$relative_to_git" 
    cd ../ 
done 

# echo "$git_remote/+/$git_branch/$relative_to_git" 
# For andoid.googlesource.com uncomment the above and comment the below lines 
echo "$git_remote/tree/$git_branch/$relative_to_git" 

cd $initial 
관련 문제