2009-12-31 28 views
15

Tôi muốn xem cách TFS hoạt động cho lệnh của tôi. Vì vậy, tôi muốn di chuyển kho lưu trữ GIT hiện tại của chúng tôi sang cơ sở dữ liệu TFS. Chúng tôi đã sử dụng GIT để hỗ trợ phân nhánh được ưu tiên nên tôi muốn sử dụng TFS 2010 để giải quyết vấn đề đó.Git để TFS Di chuyển điều khiển nguồn

Hiện câu hỏi là. Làm cách nào để xuất repo GIT của chúng tôi sang TFS. Rõ ràng đó là một số loại kịch bản. Có ai làm điều đó không? Bất kỳ đề xuất?

Cảm ơn bạn.

+17

Tại sao địa ngục sẽ chuyển từ git sang tfs? – hasen

+14

Hai từ: dụng cụ tốt hơn. Tôi biết rằng git có rất nhiều hype. Và bản thân ông Torwalds đã viết một loạt nó, nhưng tương tác với điều này SUCKS. Tôi đã sử dụng nó trong 19 tháng, tôi đã giới thiệu nó với nhóm và tôi không nghĩ nó là một viên đạn bạc. Tất cả các công cụ giao diện người dùng đều bị lame. Giao diện dòng lệnh là chi tiết. Tôi có tập hợp các tập lệnh để hỗ trợ quy trình làm việc của mình, nhưng đó không phải là giải pháp mà tôi tự hào. Cộng với TFS không chỉ là kiểm soát nguồn. Đó là một giải pháp phức tạp: theo dõi lỗi, xây dựng hệ thống, tích hợp VS, trang web SP để không có nhà phát triển xem quy trình và gửi lỗi, v.v. –

+0

Tiện ích mở rộng Git https://code.google.com/p/gitextensions/ đang nhanh chóng thực hiện Lời bình luận của Artem đã lỗi thời. Giao diện người dùng đẹp hơn nhiều so với giao diện người dùng đi kèm. –

Trả lời

9

Microsoft đã phát hành GIT < của riêng mình -> mở rộng TFS cho GIT: GIT-TF

này cho phép kéo một kho lưu trữ GIT mới từ TFS hoặc cấu hình để cho phép GIT để TFS đẩy, đó là những gì bạn muốn làm :

(từ tài liệu)

Đối với một nhóm làm việc với một repo Git hiện có, một nhà phát triển chia sẻ thay đổi để TFS sử dụng Git-TF sẽ sử dụng các công việc tiếp theo.

# Configure the existing repo's relationship with TFS 
git tf configure http://myserver:8080/tfs $/TeamProjectA/Main 

# Fetch the latest changes from TFS and merge those 
# changes with the local changes. 
# Note, merging is important when working in a team configuration. 
# See "Rebase vs. Merge" below. 
git tf pull 

git commit -a -m "merge commit" 

# Check in the merge commit as a single TFS changeset 
git tf checkin 

# Push the merge commit to the origin 
git push 

Bên cạnh đó, từ trước giải pháp mã nguồn mở GIT-TFS có thể được sử dụng (từ Windows chỉ, giải pháp của Microsoft sử dụng Java và là cross-platform), được mô tả trong một câu trả lời cho Git to TFS 2008 one way migration (with history)

+0

Giải pháp này sẽ chỉ làm việc các chi nhánh không có. Nếu bạn có các nhánh, một giải pháp tốt hơn sẽ là sử dụng TFS2013 (Git) – Philippe

0

Bạn có thể xuất git sang svn và sử dụng CS Converter để chuyển từ svn sang TFVS. Lưu ý - Chuyển đổi CS đã bị ngừng hoạt động, nhưng có vẻ như bạn vẫn có thể tải xuống.

2

Thiết lập SVNBridge thành TFS và sau đó sử dụng bản sao git-svn.

+2

Đó là bản cập nhật git svn nhưng bạn nói đúng. Tôi đã làm chính xác điều này. –

+0

Tôi không thấy lệnh 'git svn update' trong [Git docs] (http://git-scm.com/docs/git-svn) nữa, mặc dù tôi đã tìm thấy' git svn dcommit', mà " Commit [s] mỗi diff từ nhánh hiện tại trực tiếp đến kho SVN, và sau đó rebase [s] hoặc reset [s] (tùy thuộc vào việc có hay không có sự khác biệt giữa SVN và head) .Điều này sẽ tạo một bản sửa đổi trong SVN cho mỗi cam kết trong git. " Vì vậy, nếu điều này được cho là cùng một điều? –

5

Tôi tạo ra một tập tin thực thi nhanh chóng, nhưng bạn cần phải có Team Foundation Power Tools (tfpt.exe) trong đường dẫn của bạn và Đối (một lệnh dòng lệnh loop)

trực quan dòng Studio Command để thư mục git mong muốn của bạn và chạy như sau.

git log --pretty="'%%H',%%ci - %%s" --reverse > commits 

tf workspace temp /new /s:http://{TfsInstance} /i 
tf workfold /map %2 . /workspace:temp 

FOR /F "tokens=1* delims=','" %%a IN (commits) DO git checkout %%a && tfpt online /recursive /exclude:.git*,commits,*.obj,*.exe,_ReSharper*,obj,debug,*.user,*.suo,Bin /adds /deletes /i && tf checkin /author:"{AuthorName}" /comment:"%%b" /i 

tf workspace temp /delete /i 
  1. Đầu tiên nó tạo ra một tập tin cam kết với tất cả các thông tin cam kết theo thứ tự ngược (đầu tiên).
  2. Sau đó, nó sẽ tạo ra một không gian làm việc Team Foundation ... (hãy chắc chắn để thay thế {TtsInstance} với TFS URI của bạn.
  3. Sau đó, nó sẽ tạo ra một thư mục tạm thời trong không gian làm việc.
  4. Sau đó, nó vòng qua từng dòng trong tập tin cam kết , thực hiện thanh toán từ git, sử dụng TFPT để kiểm tra các tệp hiện tại (hãy nhớ thay thế {AuthorName} bằng tên tác giả của bạn) nhận xét sẽ bao gồm dấu thời gian từ git (tiếc là bạn không thể thay đổi thời gian đăng ký mà không thay đổi thời gian của máy chủ TFS và tôi khuyên bạn nên chống lại điều đó) và tên của tác giả gốc.

T anh ấy làm việc ổn, nhưng các chi nhánh sẽ không bị ảnh hưởng. Tôi không dành thời gian để tìm ra nhánh vì nó không phải là một yếu tố đủ lớn cho công việc vào thời điểm đó.

Hy vọng rằng điều này có thể giúp người khác tiết kiệm thời gian! tại

+0

Tôi đã thêm 'Thumbs.db' vào danh sách loại trừ ** tfpt **. Tôi đã xóa nó khỏi lịch sử git vì nó vô tình được thêm vào trước khi tôi đưa vào tệp _.gitignore_ và đã nhận được lỗi khi tôi chạy tệp '.bat'. –

-1

Đây là một câu hỏi cũ, và có lẽ không ai đang tìm kiếm điều này nữa, nhưng bây giờ nó dễ dàng hơn rất nhiều.

  1. Tạo một nhóm dự án trong TFS với Git như kiểm soát mã nguồn

  2. Grab url Git cho dự án. Nó sẽ trông giống như ... https://YOURPROJECTS.visualstudio.com/DefaultCollection/_git/PROJECTNAME

  3. Thả vào lệnh thích và thực thi.

    git remote thêm nguồn gốc https://YOURPROJECTS.visualstudio.com/DefaultCollection/_git/PROJECTNAME

    git push -u gốc --all

nên được tất cả các bạn cần.

+0

Không thực sự hữu ích, như khi sử dụng GIT được lưu trữ TFS, bạn không nhận được bộ điều khiển đầy đủ mà bạn có một dự án được quản lý đầy đủ TFS. –

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