Hướng dẫn: Source Control
Các mục
Accessing Version Control
• Xem xét sử dụng các công cụ command-line
tool.
• Sử dụng Microsoft® Visual Studio® 2005 Team
Foundation Power Tools (TFPT) để unshelve một sự thay đổi change.
• Sử dụng Team Foundation Power Tools để phục hồi
một thay đổi change.
• Sử dụng Team Foundation Power Tools để làm việc
offline.
• Sử dụng Team Foundation Power Tools để lấy một
changeset.
• Sử dụng Team Foundation Power Tools để remove
các pending edit.
Administration
• Tắt các quyền kế thừa permission
trên các nhánh maintenance branche.
• Từ chối(deny) các check-in
permission cho các lập trình viên mà bạn chưa tin tưởng để thực hiện các thay đổi
phần source của bạn.
Branch / Label / Merge
• Sử dụng các label để đánh dấu các
build mà bạn cần phải return.
• Sử dụng các branche để phân chia
các bản phát hành(release) được hỗ trợ.
• Kế hoạch cấu trúc branch của bạn dựa
vào các đường dẫn merge(merge path).
• Branch tại một high level, gồm có các file cấu
hình và file source.
• Không thực hiện branch quá sâu.
• Không branch nếu bạn không cần thiết.
• Tránh các merge không có cơ sở nếu có thể.
• Các full merge được ưa thích hơn là các
"cherry-pick" merge.
• Merge một cách thường xuyên.
• Luôn tạo một thư mục top-level folder cho một
team project mới để được xử lý như là một main branch.
• Xem xét sử dụng candidate switch hay preview
switch để double-check trước khi merging.
• Khi các rename là một phần của merge, hãy chú
ý đến các path mà các tool đề nghị.
• Cẩn thận khi giải quyết các xung đột trong việc
merge.
• Kiểm tra các kết quả của một việc merge tại một
thời điểm.
• Build và run các test sau khi merge và trước
khi check-in.
Check-ins and Check-in Policies
• Chỉ check in phần code của bạn khi bạn đã sẵn
sàng để share.
• Sử dụng các shelveset để back up hay là share
các pending change.
• Giải quyết một work item trên một check-in.
• Sử dụng các chính sách check-in policy để thực
thi các tiêu chuẩn code.
• Sử dụng các chính sách check-in policy để thực
thi một cổng chất lượng code(code quality gate).
• Phát hiện khi một policy bị ghi đè.
• Lên kế hoạch để tránh các xung đột.
Checkout, Get, and Lock
• Lấy các source mới nhất trức khi thực hiện
các thay đổi.
• Sử dụng các lệnh lock command tùy ý.
• Giao tiếp với các cộng sự khi khóa lock các
file.
Dependencies
• Sử dụng các project reference bất cứ khi nào
có thể.
• Sử dụng các file reference chỉ nơi nào cần
thiết.
• Sử dụng copy local = true cho các project
references và file references.
• Sử dụng các URL động khi reference các Web
service.
Distributed / Remote Development
• Hãy đảm bảo là bạn nhận một ổ đĩa disk drive
có kích cỡ phù hợp với proxy của bạn.
• Tạo một scheduled task để lấy(pull) các file
mới nhất định kì.
• Giám sát định kì các proxy performance
counter và event log.
• Cấu hình thực hiện Timeout dựa trên kích cỡ
file và bandwidth.
• Disable proxy nếu nó sắp bị down trong một
khoảng thời gian dài.
• Xem xét các workspace cloak để giảm thiểu việc
chuyển(transfer) các file không cần thiết.
Migration
• Sử dụng VSS converter để di chuyển(migrate) đến
Team Foundation Server Source Control.
• Di chuyển(migrate) từ các source-control
system khác đến Team Foundation Server Source Control.
Project / Workspace Management
• Tách một nhà phát triển đơn(single developer)
sử dụng các workspace chứ không phải là các
branche.
• Delete và rename các file bằng cách sử dụng
source control, chứ không phải là Microsoft Windows® Explorer.
• Chỉ delete và rename với solution open của bạn.
• Tạo một team project trên một application nếu
bạn muốn di chuyển các asset của bạn giữa các phiên bản của ứng dụng.
• Tạo một
team project trên một version nếu bạn muốn bắt đầu một cách mới hoàn
toàn với từng phiên bản của ứng dụng.
• Sử dụng branchđể share các code và binaries
mà có yêu cầu kiểm thử integration testing.
• Tránh các workspace mapping để hỗ trợ các phụ
thuộc qua lại giữa các project.
• Tạo một workspace mapping tại team project
root level.
• Sử dụng một đường dẫn local folder path duy
nhất trên các shared computer.
• Cấn nhắc việc chỉ ánh xạ(map) các một phần của
source tree.
• Cấu trúc source tree của bạn để hỗ trợ
branching. Shelving
• Sử dụng shelving để share các pending change
cho việc xem xét hoặc bàn giao.
• Sử dụng shelving để back up các pending
change cho server.
• Sử dụng shelving nếu bị gián đoạn bởi các
công việc ưu tiên hơn.
Accessing Version Control
• Xem xét sử dụng các công cụ command-line
tool.
• Sử dụng Team Foundation Power Tools để phục hồi
một thay đổi change.
• Sử dụng Team Foundation Power Tools để làm việc
offline.
• Sử dụng Team Foundation Power Tools để lấy một
changeset.
• Sử dụng Team Foundation Power Tools để remove
các pending edit.
Xem xét sử dụng các công cụ command-line tool
Đối với các hoạt động không có sẵn trong Visual Studio, nếu bạn cần lên
kế hoạch các hoạt động, hãy xem xét việc sử dụng các công cụ command-line tool
như là Team Foundation Power Tools (Tfpt.exe) được cung cấp cùng với Team
Foundation Server (TFS). Các công cụ Tfpt.exe tool có sẵn như một phần download
riêng. Bạn có thể sử dụng các công cụ command-line tool này để lên kế hoạch các
hoạt động bằng cách sử dụng Windows Task Scheduler.
Để đảm bảo là các đường dẫn path phù hợp và các môi trường khác
nhau(environment variable) được cài đặt, hãy chạy Tf.exe từ Visual Studio 2005
Command Prompt window, hay chạy file Vsvars32 batch file, thường được đặt tại
DriveLetter:\Program Files\Microsoft Visual Studio 8\Common7\Tools. Công cụ
Tf.exe tool hỗ trợ hầu hết các lệnh source control như là Checkin, Checkout, Get, History, Shelve, Branch, Merge, Label, Status,
Undelete, và Undo.
Sau đây là các hoạt động thông thường mà bạn có thể muốn thực thi từ
command line bằng cách sử dụng Tf.exe:
- Đồng bộ hóa các file từ server
đến máy của bạn - tf get
- Thêm một file vào server - tf add
- Check out một file để chỉnh sửa
- tf checkout
- Check in các pending change - tf checkin
- Lấy một changeset cụ thể từ
server - tf get /version
Có một số hoạt động mà bạn chỉ có thể được thực hiện từ command line:
- Delete workspace của user khác
- tf workspace /delete
- Undo một hành động check-in của
user - tf undo
- Unlock một hành động lock của
user - tf lock
- Định nghĩa label scope - tf label
- Thực hiện một merge không có cơ
sở(baseless merge) - tf merge
Tài nguyên bổ sung
Sử dụng Team Foundation Power Tools để phục hồi
một thay đổi change
The Team Foundation Power Tools (TFPT) cung cấp các chức năng
version-control functionality mà không có sẵn trong Visual Studio. Thí dụ, bạn
có thể sử dụng TFPT để giúp hỗ trợ các offline work hay để thực hiện các hành động
rollback để undo các check-in của một changeset. Hãy xem xét sử dụng TFPT nếu bạn cần unshelve
một change.
Hoạt động unshelve operation được TFS hỗ trợ, không cho phép các shelved
change và các local change được merge với nhau. Bằng cách sử dụng TFPT để
unshelve một change từ một changeset, nếu một item trong local workspace của bạn
có một pending change là một edit, và shelved change cũng là một edit, sau đó
TFPT có thể merge các change với một cách merge thứ ba.
Bạn chạy command từ command line bằng cách sử dụng Tfpt.exe.
Tài nguyên bổ sung
Sử Dụng Team Foundation Power Tools Để Roll
Back Các Change
Xem xét sử dụng TFPT nếu bạn cần roll back một change. Khả năng undo một
check-in của một changeset không được hỗ trợ trực tiếp trong TFS. Bằng cách sử
dụng TFPT rollback command, bạn có thể cố gắng undo bất kì change nào được thực
hiện trong một changeset cụ thể. Không
phải tất cả các change đều được roll back, nhưng các rollback được thực hiện
trong hầu hết các scenario.
Bạn chạy dòng lệnh này từ command line bằng cách sử dụng Tfpt.exe.
Tài nguyên bổ sung
- Để download Team Foundation
Power Tools, hãy đến
http://www.microsoft.com/downloads/details.aspx?familyid=7324C3DB-658D-441B-8522-689C557D0A79&displaylang=en
- Để xem một forum đang thảo luận
về Team Foundation Power Tools, hãy xem
http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=930&SiteID=1
Sử dụng Team Foundation Power Tools để làm việc
offline
Offline working không được hỗ trợ trong TFS. Nếu bạn muốn work offline,
bạn phải tuân thủ nghiêm ngặt các workflow sau đây:
1. Remove bằng tay các read-only
flag.
2. Edit các file.
3. Add hay delete các file
4. Run the TFPT online command.
Mỗi bước được mô tả chi tiết dưới đây.
Quan trọng: Bạn phải
rename bất kì file nào trong khi bạn offline.
1. Remove bằng tay các read-only flag.
Mặc định, tất cả các file trong workspace mà không được check out sẽ được
đánh dấu là read-only. Khi bạn làm việc mà không có một server connection, bạn
phải remove bằng tay các read-only flag khỏi các file trước khi chỉnh sửa hay
xóa chúng. Để làm điều này, hãy click chuột phải vào file trong Windows
Explorer, click Properties, xóa đi Read-only
check box, và sau đó click OK. Ngoài
ra, bạn có thể sử dụng DOS command attrib -r.
2. Edit các file.
Bây giờ bạn có thể chỉnh sửa edit bất kì file nào mà bạn đã remove đi
read-only flag.
3. Add hay delete các file
Bạn có thể thêm hay xóa các file mà bạn đã remove đi read-only flag. Đừng
rename các file, bởi vì công cụ TFPT online tool không phân biệt được một hành
động rename từ một hành động xóa được ghép với một hành động thêm.
Lưu ý: Bạn phải xác định một lựa chọn
Tfpt online command để có được nó để tìm kiếm các hành động xóa, vì đây là thời gian dành cho các hoạt động.
4. Run the TFPT online command.
Khi bạn quay lại online, hãy chạy lệnh TFPT online command bằng cách
đánh các lệnh TFPT online ở trong
command line. Lệnh này sẽ scan workspace của bạn đối với các file có thể ghi được
và xác định những thay đổi nào nên được treo(chưa quyết định) trên server. Nếu
bạn đã xóa bất kì file nào, hãy sử dụng chuyển đổi /delete
switch. Lệnh này nói cho tool là đế
scan đối với các file đã delete trong workspace của bạn. Công cụ tool sẽ hiển
thị cửa sổ online window mà bạn có thể chọn những thay đổi để pend trong workspace.
Tài nguyên bổ sung
- Để download Team Foundation
Power Tools, hãy đến
http://www.microsoft.com/downloads/details.aspx?familyid=7324C3DB-658D-441B-8522-689C557D0A79&displaylang=en
Sử Dụng Team Foundation Power Tools Để Lấy Một
Changeset
Xem xét sử dụng TFPT nếu bạn cần lấy một changeset. The TFPT GetCS
command cho phép bạn nhận tất cả các item được liệt kê trong một changeset tại thời điểm của changeset version. Điều này
có ích nếu một đồng nghiệp đã kiểm tra một change mà bạn cần có trong workspace
của bạn, nhưng bạn không thể thay đổi toàn bộ workspace cho version mới nhất.
Bạn chạy lệnh này từ command line bằng cách sử dụng Tfpt.exe.
Tài nguyên bổ sung
- Để download Team Foundation
Power Tools, hãy đến
http://www.microsoft.com/downloads/details.aspx?familyid=7324C3DB-658D-441B-8522-689C557D0A79&displaylang=en
- Để xem một forum đang thảo luận
về Team Foundation Power Tools, hãy xem tại
http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=930&SiteID=1
Sử Dụng Team Foundation Power Tools Để Remove
Các Pending Edit
Xem xét sử dụng TFPT nếu bạn cần remove các pending edit từ các file.
The TFPT Undo Unchanged command remove các pending edit từ các file mà
không chưa thực sự được edit. Điều này
có ích trong một scenario nơi mà bạn check out một số lượng lớn các file cho việc
edit, nhưng chỉ thực hiện các thay đổi thực sự đến một số lượng nhỏ các file. Bạn
có thể undo các edit của bạn trên các file chưa được thay đổi bằng cách chạy
TFPT UU tool, mà so sánh các hash của các file trong local workspace để hash
trên server để xác định các file có thực sự được edit hay không.
Bạn chạy lệnh này từ command line
bằng cách sử dụng Tfpt.exe.
Tài nguyên bổ sung
- Để download Team Foundation
Power Tools, hãy đến
http://www.microsoft.com/downloads/details.aspx?familyid=7324C3DB-658D-441B-8522-689C557D0A79&displaylang=en
Administration
• Không cho phép các quyền kế thừa permission trên các nhánh maintenance
branche.
• Từ chối(deny) các check-in permission cho các
lập trình viên mà bạn chưa tin tưởng để thực hiện các thay đổi phần source của
bạn.
Không Cho Phép Các Quyền Kế Thừa Permission
Trên Các Nhánh Maintenance Branche.
Mỗi một branch được bảo trì- thí dụ, sau khi bạn chuyển một version của
phần mềm của bạn- bạn có thể tắt các inherite permission để lock down cái cây
tree. Sau khi thực hiện điều này, bạn có thể cấp cho cá nhân các user quyền
PendChange và Checkin permission khi cần thiết để sữa chữa kịp lúc.
Tài nguyên bổ sung
Từ Chối(Deny) Các Check-In Permission Cho Các
Lập Trình Viên Mà Bạn Chưa Tin Tưởng Để Thực Hiện Các Thay Đổi Phần Source Của
Bạn
Bạn có thể từ chối deny các check-in permission trên source tree đối với
các lập trình viên mà bạn chưa tín nhiệm, như là nhân viên mới thuê hay các nhân
viên thực tập. Hãy chắc là bạn đã thiết lập các permission mong muốn của bạn (kể
cả các permission cho account của bạn) trước khi tắt chế độ inheritance. Thay
vì check in một cách trực tiếp, họ có thể thực hiện các pending change và sau
đó shelve những thay đổi này. Một lập trình viên có thêm nhiều kinh nghiệm sau
khi unshelve các thay đổi change, review lại, và kiểm tra check in chúng.
Tài nguyên bổ sung
Tài liệu hoàn chỉnh của phần này bạn có thể download tại đây:
Hướng dẫn: Source Control