2012-04-20 38 views
18

Chúng ta có thể chuyển đổi giữa các chi nhánh tại TFSTeam Foundation Server chuyển đổi giữa các chi nhánh

những gì tôi muốn là tôi đã tải về một bản sao làm việc và bây giờ tôi muốn chuyển sang chi nhánh khác nhau mà không cần tải tất cả mọi thứ, bởi vì đối với các dự án lớn nó sẽ mất rất nhiều thời gian kể từ khi các nhà phát triển dành nhiều thời gian tải xuống

Có thể, nếu không phải giải pháp nào khác không ??

+0

Bạn đã làm gì? – granadaCoder

Trả lời

4

Trong các nhánh TFS có "thể chất" hiện diện trong Kiểm soát nguồn, chúng giống như "các thư mục đặc biệt". Vì vậy, bạn hoàn toàn có thể chọn chi nhánh bạn nhận được tại địa phương bằng cách nhắm mục tiêu đúng thư mục để bạn nhận được.

Nếu bạn có ví dụ:

  • dự án [thư mục]
    • PROJECTA [thư mục]
      • Dev [Chi nhánh]
      • V1 [Chi nhánh]
    • ProjectB [thư mục]
      • Dev [Chi nhánh]
      • V1 [Chi nhánh]

và bạn muốn nhận được ở mức độ "dự án" chỉ với nội dung của "Dev", bạn có thể tạo lập bản đồ trong định nghĩa Workspace của bạn để che giấu các nhánh V1 của ProjectA và B.

+0

Tôi có thể unbind proj hiện tại và liên kết với một chi nhánh phải không ?? – user804401

+0

Dự án của bạn sẽ được sao chép, sẽ có một phiên bản cho mỗi chi nhánh.Để tải dự án, trước tiên bạn sẽ đặt nhánh bạn muốn sử dụng, sau đó tải dự án bên trong. – Nock

-1

Bạn có thể chuyển đổi giữa nhiều nhánh, miễn là bạn đang sử dụng cùng một không gian làm việc và thư mục làm việc chứa các nhánh.

+6

có nhưng làm cách nào bạn có thể làm điều đó? –

+0

@Maurizio Trong denmark tôi tin rằng Jehan33 có thể nói về việc chuyển đổi các nhánh bằng cách sử dụng TFS thông qua Eclipse, điều này là có thể. OP không cho biết IDE nào đang sử dụng – ethesx

13

Bạn có thể chuyển chi nhánh từ khách hàng dòng lệnh (chỉ tải những khác biệt) bằng cách thay đổi ánh xạ không gian làm việc của bạn và sử dụng /remap cờ đến get lệnh:

tf workfold /map $/Branch1 C:\Work 
tf get C:\Work /version:T /recursive 
tf workfold /unmap $/Branch1 
tf workfold /map $/Branch2 C:\Work 
tf get C:\Work /remap /version:T /recursive 
+1

Có thể thực hiện điều này từ IDE không? ví dụ. đặt tất cả các nhánh của cùng một codebase vào cùng một thư mục không gian làm việc cục bộ được ánh xạ và chuyển đổi được sử dụng? –

+1

Shameless Plug: Tôi đã tạo dự án [TfDash] (https://bitbucket.org/Sumo/tfdash) để thực hiện những việc như thế này * nhiều * dễ dàng hơn. 'tf-switch [TFS Branch Path]' là tất cả những gì bạn cần. – Sumo

+0

Tôi có hiểu chính xác rằng hai dòng đầu tiên ánh xạ và lấy nhánh ban đầu vì vậy nếu tôi đã có nó ở địa phương, tôi không cần phải chạy chúng? Và dòng 3 unmaps các chi nhánh tôi cần phải chuyển sang để nếu tôi không bao giờ được ánh xạ nó tại địa phương tôi cũng không cần nó? Vì vậy, trong dòng 4 tôi ánh xạ Branch2 vào thư mục mà Branch1 đã được ánh xạ (không cần phải unmap nó?) Và sau đó thực sự chuyển đổi phiên bản địa phương trong dòng 5. – ElDog

1

Đội Explorer Ở khắp mọi nơi có một "Đổi thành nhánh "lệnh, có thể là những gì bạn đang tìm kiếm.

Visual Studio, mặt khác, không có lệnh tương tự ...

3

Chỉ cần bổ sung các kiến ​​thức cơ bản - đồng nghiệp Isak Savo tạo batch hữu ích của tôi cho mục đích đó. Bạn cần thực hiện một số chỉnh sửa bên trong tập lệnh (ở trên cùng) để trỏ đến vị trí mã nguồn chính xác và các nhánh thích hợp. Cốt lõi cơ bản giống như trong câu trả lời của Edward Thomson, nhưng với một số logic tương tác được thêm vào. Tôi thực hiện một số thay đổi nhỏ (bối cảnh thư mục chuyển đổi cho tf lệnh, trích dẫn cho các đối số - cần thiết nếu có khoảng trống trong thư mục) và chia sẻ nó dưới đây:

@echo off 
rem Command to switch the current source tree to a new branch. 
rem It's best to not have any pending changes. 
set DEVBRANCH=$/dir/src1 
set RELEASEBRANCH=$/dir/src2 
set SOURCEDIR=c:\sources directory\src 

if exist "%SOURCEDIR%" goto ASK 

echo Source code directory (%SOURCEDIR%) not found, please edit this script to point to the correct directory 
pause 
exit 

:ASK: 
set TARGET= 
echo Available branches are: 
echo Dev: %DEVBRANCH% 
echo Release: %RELEASEBRANCH% 
set /P ANSWER=Specify target branch? [Dev, Release] 
cls 
if /I "%ANSWER%"=="Release" set TARGET=%RELEASEBRANCH% 
if /I "%ANSWER%"=="Dev" set TARGET=%DEVBRANCH% 
if /I "%ANSWER%"=="quit" goto END 
if [%TARGET%] NEQ [] goto SWITCH 

echo "%ANSWER%" unknown, please answer Dev or Release. Specify quit to cancel 
GOTO ASK 

:SWITCH 
rem Navigate to the mapping source folder to avoid "Unable to determine the workspace..." error while invoking tf commands. 
echo Changing directory context 
pushd %SOURCEDIR% 

echo Switching to branch %TARGET% 
echo - Creating new mapping... 
tf workfold /map "%TARGET%" "%SOURCEDIR%" 
echo - Get latest version... 
tf get "%SOURCEDIR%" /remap /version:T /recursive 

popd 
goto END 

:END 

Lưu nó ví dụ để chuyển đổi_branch.cmd và thực thi từ bất kỳ thư mục nào từ máy của bạn.

Các vấn đề liên quan