2008-08-12 29 views
51

Tôi đã chuyển từ TFS sang SVN (TortoiseSVN) với công ty hiện tại của tôi. Tôi thực sự bỏ lỡ tính năng "Shelve" của TFS. Tôi đã đọc nhiều bài báo về cách "Kệ" với SVN, nhưng tôi đã đọc không có gì mang đến một trải nghiệm rất đơn giản để "làm việc".Kệ trong TortoiseSVN?

Lý tưởng nhất, tôi muốn thêm các mục bổ sung vào menu ngữ cảnh TortoiseSVN - "Kệ" & "Unshelve". "Shelve" sẽ xóa bộ giá sách hiện tại và tải lên thư mục hoạt động dưới đường dẫn phù hợp được xác định bởi tùy chọn người dùng. "Unshelve" sẽ hợp nhất tập hợp với bản sao làm việc.

Có điều gì như thế này không? Bất cứ ai có thể đề nghị bất kỳ cách nào để "hack" tính năng này trong GUI?

Lưu ý: Các liên kết sau đây không thực sự đạt được kinh nghiệm người dùng tôi đang tìm kiếm:

Shelving Subversion

Một trong những điều tuyệt vời nhất về TFS xiên là cách dễ dàng để sử dụng ...

Trả lời

29

Tôi không tin rằng SVN có tính năng này được tích hợp vào sản phẩm máy chủ. Tôi cũng không tin bất cứ điều gì như thế này mô phỏng trong bất kỳ khách hàng mà tôi đã sử dụng, bao gồm TortoiseSVN.

Để khắc phục sự cố này, tôi đã sử dụng DVCS chẳng hạn như git hoặc mercurial, để cho phép tôi phân nhánh/hợp nhất/gắn cục bộ trước khi đẩy nội dung trở lại SVN. Nó được cho là một chút của một kludge, nhưng nó hoạt động thực sự tốt.

Tôi hy vọng điều đó sẽ hữu ích. Chúc may mắn!

+3

Tôi không sử dụng VCS cá nhân riêng biệt trong nhiều năm khi làm việc với các đội mà chúng tôi kiểm soát chặt chẽ các checkins (và đặc biệt là với VCS dựa trên khóa như SourceSafe). –

+3

Bạn nói đúng, nó không phải là một kludge. Thành thật mà nói tôi không biết tại sao tôi nói nó, có lẽ là một chút của một tuyên bố từ chối để tránh bị lambasted :) Tôi rất hài lòng với việc sử dụng DVCS cho kệ địa phương trước khi đẩy đến một CVCS tiêu chuẩn. –

+3

Xem: Cách sử dụng tính năng mercurial và svn cùng nhau http://stackoverflow.com/questions/4605668/how-to-use-mercurial-and-svn-together – AndyM

2

Bạn có thể sử dụng DVCS nhưng theo cách này là kludge. 'Kệ' trong một DVCS chỉ lưu trữ các thay đổi cục bộ của bạn. Nó chỉ hữu ích nếu bạn muốn kiểm tra công việc của bạn để khôi phục nếu bạn phá vỡ nó với công việc tiếp theo, nhưng tốt hơn là bạn muốn lưu công việc của bạn trên máy chủ.

Một cách để thực hiện việc này trong SVN mà không có lệnh rõ ràng là chuyển đổi bản sao làm việc của bạn sang vị trí svn khác và cam kết thay vì trên repo chính của bạn. Điều này là có hiệu quả như tạo ra một chi nhánh tạm thời và làm việc trên đó trong suốt thời gian công việc của bạn. Tôi không nghĩ rằng bạn thậm chí sẽ phải hợp nhất như SVN sẽ làm điều đó cho bạn khi bạn chuyển đổi, như sửa đổi địa phương của bạn sẽ được giữ.

Thật không may, bạn không thể chuyển sang vị trí không tồn tại, vì vậy lần đầu tiên bạn thực hiện việc này, bạn sẽ phải tạo 'nhánh' để đặt. Tôi đoán toàn bộ điều có thể được tự động hóa.

15

Nếu bạn hiểu cách chi nhánh SVN làm việc, bắt chước xiên trong SVN là không có trí tuệ:

  1. Tạo một chi nhánh trong kho (trên máy chủ)
  2. Chuyển bản sao cục bộ của bạn để nó
  3. Cam kết thay đổi của bạn đến chi nhánh mới
  4. Chuyển bản sao cục bộ của bạn trở lại thân cây

Khi bạn đã sẵn sàng để quay trở lại với các thay đổi được xếp loại của bạn ("unshelve"), chỉ cần hợp nhất chi nhánh kệ trở lại bản sao cục bộ của bạn.

Nếu bạn không biết dòng lệnh SVN cũng không Rùa SVN cũng đủ để làm các việc trên, đây là một bước-by-step hướng dẫn siêu chi tiết về làm thế nào để làm điều đó trong Rùa SVN:

  1. Đỗ "SVN Update" để cập nhật bản sao làm việc của bạn lên phiên bản mới nhất của thân cây. Bằng cách này, sự khác biệt duy nhất giữa bản sao cục bộ và thân cây là những thay đổi của bạn.
  2. Từ trình đơn ngữ cảnh, chọn "Chi nhánh/Thẻ"
  3. tùy chọn "Phiên bản HEAD trong kho" được chọn theo mặc định. Giữ nó.
  4. Thay đổi "To Url" để chỉ định tên chi nhánh, ví dụ: http://server/repository/project1/branches/shelf1
  5. Kiểm tra "Chuyển bản sao làm việc để mới chi nhánh/thẻ" hộp
  6. Nhấn Ok để tạo ra các chi nhánh và chuyển sang nó
  7. Đừng "SVN Commit ..." và cam kết thay đổi của bạn đến chi nhánh mới được tạo
  8. Từ trình đơn ngữ cảnh, chọn "Chuyển đổi ..."
  9. Thay đổi "Tới URL" thành URL chính http://server/repository/project1/trunk
  10. Bấm OK để quay về thân

Xem liên kết này để biết thêm chi tiết và các dòng lệnh tương đương với trên:
Shelves in Subversion

+8

Trên các kho lưu trữ lớn, đây là một cách chậm chạp (và dễ bị lỗi nếu có các xóa ở đây và ở đó) xử lý – Samaursa

+1

@Samaursa, bước nào chậm? Ngoài ra, xóa không bao giờ là vấn đề đối với tôi, trừ khi có các mục không phiên bản trong bản sao làm việc (bạn nên làm sạch trước khi chuyển đổi, đọc phần này: (http://subversion.apache.org/faq.html#switch-problems) – zvolkov

+0

Việc chuyển sang một nhánh mới hoặc thậm chí là thân cây Rất rất chậm trên kho lưu trữ nơi tôi làm việc (nó khá lớn) và thậm chí trên một số dự án của tôi đang ngày càng phức tạp (tôi chuyển sang dùng cho các dự án cá nhân). Vâng, những vấn đề không được phiên bản Một khi chuyển sang dùng mercurial, tôi không thể tin được mọi chuyện dễ dàng đến mức nào, quá tệ, họ không sử dụng nó ở nơi làm việc. – Samaursa

8

Một lựa chọn khác là sử dụng 'Tạo vá 'cơ sở trong TortoiseSvn để tạo tệp vá và hoàn nguyên thay đổi. Các tập tin vá lỗi sau đó có thể được áp dụng lại để lấy lại vị trí của bạn.

Bạn vẫn có thể kết thúc với một số kết hợp dính nếu bạn phải cập nhật bản sửa đổi bản sao làm việc.