어떻게 하나 만들 수 있어?변수 심볼릭 링크현재 사용자에 따라 다른 위치를 가리킬까요? 가능합니까? 대신 다른 것을 사용해야 하나요? 마운트 지점? 어떻게?
다른 해결책이 나타나면 질문은 다음과 같습니다.
우리는 Unix에서 SVN을 사용하여 개발하는 팀입니다. 우리는 모두 동일한 개발 시스템(원격)을 사용합니다. 따라서 우리는 다른 위치(/home이 아니라 /svn/[userlogin]/와 같이 다른 디스크에 마운트된 특정 디렉토리)에서 체크아웃을 수행합니다.
우리는 스크립트와 도구를 사용합니다. 일부 특수 도구에는 소스 파일 경로가 포함된 복잡한 구성 및 프로젝트 파일이 있습니다. 잘못되기 쉬웠고 잘못된 구성이나 항상 다시 생성해야 하는 "프로젝트"로 인해 많은 시간을 낭비했습니다. 이 복잡한 구성과 프로젝트 파일을 모든 개발자와 공유하고 싶습니다.
하지만 다른 결제에서 이러한 파일을 공유하려면 다음을 수행해야 합니다.
- 현재 사용자에 맞게 구성/프로젝트에 저장된 경로를 즉각적으로 수정
- 사용자에 따라 다른 위치를 가리키는 /install/point 심볼릭 링크를 사용하여 "마법의" 고정 경로를 만듭니다(따라서 동일한 프로젝트 파일이지만 다른 소스를 가리킴).
그 전에는 모든 사람이 동일한 경로(예: /vob)에 뷰를 설치하고 각 개발자가 자신의 뷰를 볼 수 있는 클리어케이스를 사용했습니다. 매우 편리합니다.
비슷한 일을 어떻게 할 수 있나요? 다른 해결책을 생각해 볼 수 있나요? 감사해요.
- 편집하다 -
Eclipse IDE를 고려하고 있습니다. 일부 작업 공간 설정, 프로젝트 및 실행/디버그 구성을 공유하고 싶습니다. Eclipse(+플러그인) 설정은 50개 이상의 작은 파일로 구성되어 있으므로 편집할 수 없습니다.
Clearcase를 사용하면 각 터미널에 대해 자동으로 선택한 "보기"를 가리키는 고정된 "/vob" 경로 덕분에 이것이 쉽습니다.
나는 비슷한 것을 원합니다. 내가 하나를 원하는/svn/mysource각 터미널에 대해 이는 사용자와 연관된 경로에 있는 사용자의 현재 체크아웃을 가리킵니다.
답변1
최근에 이것을 보는 사람을 위해 나는 다음과 같은 작은 FUSE 파일 시스템을 작성했습니다.가족 FS호출 사용자의 홈 디렉터리와 관련된 디렉터리로 호출을 착신 전환합니다.
즉, 사용자 Tyler와 HomeFS 마운트 지점이 /usr/share/bigsoft/config
디렉토리에 상대적인 사용자 Sarah가 있는 경우 .config/bigsoft
Tyler가 마운트되면 ls /usr/share/bigsoft
그는 자신이 볼 수 있는 것을 보게 /home/tyler/.config/bigsoft
되고 Sarah는 자신이 볼 수 있는 것을 보게 됩니다 /home/sarah/.config/bigsoft
.
주로 독점 소프트웨어가 일부 Windows 소프트웨어의 작동 방식과 마찬가지로 일부 "설치 디렉터리"에 가변 파일을 두어야 하는 상황을 해결하기 위한 것입니다.
답변2
명령을 처리할 수 있는지 또는 셸 변수를 삽입할 수 있는지 여부는 애플리케이션 구성에 따라 다릅니다.
bash 로그인 쉘 로그인 쉘에 환경 변수 LOGNAME을 설정하십시오.
애플리케이션이 구성에 셸 변수를 삽입하는 경우 구성에 /svn/${LOGNAME}/을 사용할 수 있습니다. 그런 다음 자신의 경로를 참조하여 각 사용자와 공통 구성을 공유할 수 있습니다.
애플리케이션이 구성에 셸 변수를 삽입하지 않는 경우 각 사용자에 대한 기호 링크를 만들고, /svn 경로에 대한 범용 참조를 만들고, 공유 구성에서 일반 이름을 사용할 수 있습니다.
who
현재 사용자 이름이 나열됩니다.
심볼릭 링크를 생성하기 위해 설정 시 사용자당 한 번씩 실행되는 스크립트를 작성하려는 경우.
ln -s /svn/$(who) /svn/anyuser
그런 다음 /svn/anyuser를 참조하는 공통 구성을 공유합니다(자신에게 적합한 공통 이름 선택).
링크 사용법을 모르고 링크를 삭제하는 멍청한 사용자를 조심하세요. (방금 관리자로 승진하셨습니다 :)
답변3
따라서 각 사용자가 파일 시스템에서 서로 다른 내용을 볼 수 있기를 원합니다. Unix는 실제로 그런 식으로 설계되지 않았습니다(VMS와 Plan9를 사용하면 더 쉽게 설계할 수 있습니다).
내가 아는 유일한 방법은 chroot()를 사용하는 것입니다. 그러나 전환한 계층 구조에 없는 모든 항목을 차단하고 심볼릭 링크는 계층 구조에 남아 있으며 하드 링크는 디렉토리에 도움이 되지 않습니다. FUSE 파일 시스템을 사용하여 원하는 보기를 제공하면서 실제 루트를 미러링하는 것이 가능해야 합니다. 그런 다음 해당 위치로 루트를 이동합니다. 자신에게 맞는 기존 방법을 찾을 수 없다면 다음과 같이 작성할 수 있습니다.
답변4
Linux 또는 대부분의 다른 유닉스에서는 사용자마다 다른 콘텐츠로 심볼릭 링크를 만들 수 없습니다. 또는 가능하지만 특이한 파일 시스템을 통해서만 가능합니다(아마도퓨즈) 설정하기가 상당히 어려울 것입니다.
사용자의 홈 디렉토리와 관련된 모든 설정을 정리합니다. 아래에 어떤 파일이 /svn/$USER
있는지는 중요하지 않습니다 /home/$USER
. 각 사용자에게 심볼릭 링크를 생성하도록 하세요 /home/$USER/svn -> /svn/$USER
(또는 자신을 위해 하나 생성).
일부 응용 프로그램이 절대 경로 사용을 고집하는 경우 체크인 경로를 사용자의 올바른 경로로 바꾸는 스크립트를 작성하십시오.
sed -i -e "s:/home/\$USER/:/home/$USER/:g" .eclipse/*
커밋 전 후크에서 리터럴 문자열로 다시 변환해야 합니다 /home/bob
./home/$USER