program tip

다른 사람이 TFS의 파일을 잠근 경우 어떻게합니까?

radiobox 2020. 12. 12. 10:23
반응형

다른 사람이 TFS의 파일을 잠근 경우 어떻게합니까?


누군가 조직을 떠났지만 떠나기 전에 알 수없는 이유로 모든 파일을 잠갔습니다.

다른 개발자가 작업 할 수 있도록 어떻게 모두 잠금 해제합니까?


다음 작업의 경우 체크인을 취소하려는 프로젝트의 프로젝트 관리자이거나 모든 프로젝트에서이 작업을 수행하려면 Team Foundation 관리자 여야합니다.

그 사람의 사용자 이름이 아직 있으면 다음과 같이 간단히 할 수 있습니다.

  • Visual Studio 명령 프롬프트를 엽니 다 (시작-> 프로그램-> Microsoft Visual Studio 200X-> Visual Studio 도구-> Visual Studio 200X 명령 프롬프트).
  • 다음 명령을 실행하십시오.

tf lock / lock : none / workspace : WorkspaceName; USERNAME / recursive $ /

사용자의 작업 공간 목록을 얻으려면 동일한 프롬프트에서 다음 명령을 실행하십시오.

tf 작업 영역 / owner : 사용자 이름

더 많은 명령을 보려면 tf /?


개발자가 조직을 떠난 경우 가장 좋은 방법은 작업 영역을 삭제하는 것입니다. 이렇게하면 파일 잠금이 해제되지만 서버의 일부 리소스도 확보됩니다.

몇 년 전에 저에게 일어 났을 때 주제에 대해 제가 한 다음 블로그 게시물을 참조하십시오.

http://www.woodwardweb.com/vsts/unlocking_files.html

명령 줄 (tf.exe)을 사용하여 작업 영역을 삭제하거나 Attrice의 우수한 TFS Sidekicks사용할 수 있습니다 .


이것은 사용자의 작업 공간을 삭제하는 문제를 해결하는 유일한 방법이었습니다.

오류 메시지가 "$ / ... 항목이 someMachine123 작업 공간에서 someUser : 1의 체크 아웃을 위해 잠겨 있습니다."라는 오류 메시지가 표시되는 경우 그런 다음 명령을 사용합니다.

tf workspace /delete /server:http://machinename:8080/tfs/DefaultCollection someMachine123;someUser:1

컬렉션 URL과 사이에는 공백이 하나만 someMachine123;someUser:1있습니다.

오류 메시지에 사용자 someUser:1가라고 언급되어 있다는 사실에주의를 기울 였으므로 명령에서이를 모방했습니다. 단지 명령을 실행하는 것만으로는 충분하지 않았습니다 someUser. : 1이 무엇인지 잘 모르겠지만 요점은 오류 메시지를 모방합니다.

서버는 Team Foundation Server Administration Console-> Application Tier-> Team Project Collections로 이동하여 찾을 수있는 정규화 된 컬렉션 경로 여야합니다. 아래쪽 창에는 위쪽에서 선택한 컬렉션의 URL이 표시됩니다. 창유리.

실수로 복수 사용하려하기 때문에 나는 또한 문제가 있었 workspaces대신의 workspace복수입니다 비슷한 명령이 있기 때문에.


먼저 이것을 할 권리가 있어야합니다. 가장 쉬운 방법은 attrice http://www.attrice.info/cm/tfs/ 에서 TFS 조수를 사용하는 것입니다 .


/ collection : collectionURL을 추가해야합니다. 그렇지 않으면 작업 공간을 찾을 수 없습니다.

  • 목록 항목

tf loc / lock : none / workspace : WorkspaceName; UserName / collection : collectionURL


다음 은 TFS 권한 사용에 대한 설명입니다.

다른 사용자가 보유한 잠금을 제거하려면 "다른 사용자의 변경 사항 잠금 해제"권한을 허용으로 설정해야합니다.


시스템 관리자가 해당 사용자 암호를 재설정하고 해당 사용자로 로그온하고 모든 파일의 잠금을 해제하도록합니다.

나는 이것이 거의 모든 '이 조직에 있지 않은 사람'질문에 대한 해결책이라고 생각합니다.


서버에서 해당 사용자의 작업 공간을 삭제하는 것이 좋습니다.

tf 작업 공간 / delete / server : your_tfs_server 작업 공간; 사용자 이름


때때로 이것은 완전히 다른 응용 프로그램이 다른 사용자에 의해 잠 겼기 때문에 다른 문제를 마스킹하지만 병합하려는 새 프로젝트에 대해 새 폴더를 만들 수도 없습니다 (대상은 생성을 허용하지 않으며 누군가가 파일이 이름에 잠겨 있음)하지만 더 깊이 파고 들면 다른 프로젝트가 범인입니다.

따라서 완전히 다른 프로젝트는 다른 사람이 파일을 잠그는 문제가 될 수 있습니다.


나를 위해 일한 방법, 내 계정에는 TFS 및 프로젝트 에 대한 관리자 권한이 있습니다 .

Visual Studio 2015에서 :

  1. 팀 탐색기로 이동
  2. 솔루션을 마우스 오른쪽 버튼으로 클릭 하고 소스 제어 exporer에서 열기를 선택하십시오.
  3. 왼쪽에서 솔루션을 오른쪽 클릭하십시오.
  4. 고급 선택
  5. 잠금 선택 ...
  6. 왼쪽에서 솔루션을 오른쪽 클릭하십시오.
  7. 고급 선택
  8. 잠금 해제 선택 (이제 잠금 해제 를 선택할 수 있음)

지금은 모든 개발자가 자신의 변경 사항을 쉽게 커밋 할 수 있습니다. :)


이 솔루션을 최후의 수단으로 사용하십시오 .

TFS 2012를 사용하고 있습니다. TFS 데이터베이스로 이동하여 다음 쿼리를 실행했습니다. 그리고 작동했습니다! 물론 데이터베이스를 엉망으로 만들거나 백업을 할 때 매우 조심하십시오.

The database is called Tfs_<<your_TFS_collection_name>>. Ignore the Tfs_Configuration MSSQL database. I'm not sure but if you don't have a Tfs_<<your_TFS_collection_name>> database, settings might be in the Tfs_DefaultCollection database. Locks are stored in tbl_PendingChange.LockStatus.

/*Find correct row*/
SELECT LockStatus, PendingChangeId, *
FROM tbl_PendingChange
WHERE TargetServerItem like '%<<fileName>>%'

/*Set lock status to NULL (mine was set to 2 initially)*/
UPDATE tbl_PendingChange SET LockStatus = NULL WHERE
TargetServerItem like '%<fileName>>%'
AND PendingChangeId = <<PendingChangeId from above>>

참고URL : https://stackoverflow.com/questions/268865/what-do-you-do-if-the-file-in-tfs-is-locked-by-someone-else

반응형