Làm thế nào để bạn tránh làm việc trên các chi nhánh sai?


27

Cẩn thận thường là đủ để ngăn chặn sự cố, nhưng đôi khi tôi cần kiểm tra kỹ chi nhánh tôi đang làm việc ( ví dụ: "hmm ... Tôi đang ở devchi nhánh phải không?") Bằng cách kiểm tra đường dẫn kiểm soát nguồn ngẫu nhiên tập tin.

Khi tìm kiếm một cách dễ dàng hơn, tôi đã nghĩ đến việc đặt tên cho các tệp giải pháp cho phù hợp ( ví dụ MySolution_Dev.sln ) nhưng với các tên tệp khác nhau trong mỗi nhánh, tôi không thể hợp nhất các tệp giải pháp.

Đó không phải là vấn đề lớn nhưng có bất kỳ phương pháp hay "thủ thuật nhỏ" nào bạn sử dụng để nhanh chóng đảm bảo bạn ở đúng chi nhánh không? Tôi đang sử dụng Visual Studio 2010 với TFS 2008.


2
Điều này nghe có vẻ như là một ứng cử viên tốt cho phần mở rộng VS 2010 được viết cho phép một số loại dấu hiệu trực quan có thể định cấu hình để chỉ ra nhánh. Có lẽ tô màu nền của Solution Explorer theo cài đặt của người dùng (Tôi sẽ làm màu xanh lá cây cho Dev, màu vàng cho QA và màu đỏ cho Prod).
Jesse C. Choper

Ý tưởng hay, thậm chí một chỉ báo trên thanh tiêu đề VS sẽ giúp ích.
henginy

1
Tôi muốn nói rằng nó sẽ khá hiệu quả. Tôi đã đặt dấu nhắc bash của mình để bao gồm nhánh git của mình và liệu các tệp nguồn có sạch hay không nếu chúng cần đăng ký
Daenyth

TFS không có cái gì đó tương đương git statushoặc hg status?

Tôi sử dụng giao diện người dùng VS cho các hoạt động TFS, vì vậy tôi không thực sự có ý tưởng.
bá đạo

Câu trả lời:


16

Tôi đang sử dụng http://visualstudiogallery.msdn.microsoft.com/f3f23845-5b1e-4811-882f-60b7181fa6d6

Cập nhật tiêu đề của bạn để ví dụ:

Phát triển \ dự án

hoặc là

Chính \ myproject

hoặc là

Phát hành \ myproject

Hy vọng nó giúp


Điều đó dường như để làm điều đó, tôi sẽ thử nó ..
henginy

Tôi sử dụng phần mở rộng này cho chính xác mục đích này. Trong thực tế, tôi đã định đăng liên kết, khi tôi thấy rằng ynnok đã có.
Bobson

1
Tôi đã kết thúc việc sử dụng cái này vì tôi có thể thấy nó trong tiêu đề tôi đang ở chi nhánh nào. Thực sự tuyệt vời!!!
Piotr Kula

Vâng, nó thực sự rất thuận tiện!
bá đạo

16

Đặt tên cho các thư mục làm việc khác nhau. Đó là, nếu dự án của bạn có tiêu đề "MY_PRO DỰ ÁN", hãy tạo một thư mục làm việc khác nhau cho mỗi chi nhánh. Nếu có một nhánh có tên là "dev", thì bạn cần một thư mục cho thân cây và một thư mục cho dev, như thế này:

~/henginy/projects/MY_PROJECT-trunk
~/henginy/projects/MY_PROJECT-dev

Trên thực tế các thư mục làm việc được đặt tên khác nhau. Nhưng với một Visual Studio đã mở, (ví dụ sau khi tôi nghỉ giải lao và trở lại bàn làm việc), tôi phải kiểm tra đường dẫn của một tệp để xem thư mục. Vì vậy, tôi đoán đó là cách đơn giản nhất và không có lối thoát từ đó?
bá đạo

2
@henginy Đó là một sự làm rõ tốt. Để xác định rằng trong Visual Studio, tôi di chuột qua tab của một tệp đang mở. Nó sẽ hiển thị một chú giải công cụ của đường dẫn hệ thống tệp đầy đủ, từ đó tôi có thể xác định xem gốc là "-dev" hay "-trunk." Hãy thử điều đó và xem nếu nó làm việc cho bạn.
Matthew Rodatus

1
Vâng, đó chính xác là cách tôi "kiểm tra đường dẫn kiểm soát nguồn của một tệp ngẫu nhiên" và tôi đang cố gắng tìm cách nhanh hơn :)
henginy

@henginy ơi, đúng rồi. Bạn nói rằng trong OP. Tôi không biết cách nào tốt hơn khỏi đỉnh đầu. Âm thanh như tôi đã không cải thiện tình hình của bạn cả. :-(
Matthew Rodatus

Tôi nên làm rõ điều đó tốt hơn trong câu hỏi của tôi. Cảm ơn sự giúp đỡ của bạn!
bá đạo

8

Tôi không làm việc trong một nhánh chung hoặc nhánh.

TÔI LUÔN làm việc trong các nhánh tính năng. Khi một tính năng được thực hiện, tôi làm theo các bước sau.

  1. Điều khiển mã nguồn mở Explorer.
  2. Hợp nhất từ ​​dev vào nhánh tính năng hiện tại.
  3. Khắc phục mọi xung đột và đảm bảo mọi thứ vẫn hoạt động.
  4. Kiểm tra lại. Hợp nhất tính năng vào nhánh dev.
  5. Giải pháp mở dev.
  6. Đăng ký chi nhánh dev.
  7. Đóng giải pháp dev.
  8. Hãy để CI xây dựng và triển khai.

Tôi chỉ có chi nhánh dev mở vài phút một lần và đóng nó ngay lập tức.


7

Bạn có thể tạo một tệp trống trong mỗi nhánh, ví dụ THIS_IS_TRUNK.txt trong trung kế và THIS_IS_DEV.txt trong DEV.


2
Điều đó thực sự có thể hoạt động..Đặc biệt với một dấu gạch dưới ở phía trước tên tệp để di chuyển nó lên trong giải pháp thám hiểm.
bá đạo

6

Tôi làm rất nhiều công việc (D) VCS của tôi từ dòng lệnh. Tôi rất khuyến khích có màn hình nhắc nhở của bạn, nơi bạn đang ở. Chẳng hạn, lời nhắc của tôi khi trong repo Git trông giống như (tôi cũng làm điều này cho SVN):

[BranchName]RepoTop/path/to/current/wd >>

Và nếu repo hiện tại bẩn (thay đổi không được cam kết):

[BranchName!!]RepoTop/path/to/current/wd >>

Tôi cũng có nền được đặt thành màu đỏ nếu đăng nhập vào prod, những thứ như vậy. Tôi tìm thấy thông báo hình ảnh đơn giản là siêu hiệu quả đối với tôi.

Bạn đã đề cập rằng bạn thường thấy điều này nhất sau khi trở lại máy tính của bạn. Tôi tìm thấy một bài đăng ghi chú, với trọng tâm hiện tại của tôi (chi nhánh, lỗi #, tính năng) bị mắc kẹt trên bàn phím khi tôi rời đi, để siêu hiệu quả trong việc cho phép tôi quay lại làm việc nhanh chóng, thay vì tạo lại bất cứ điều gì tôi đã làm trước đây .


4

Có một phần mở rộng Visual Studio miễn phí có tên TFS Solution Info có thể giúp với điều này. Nó cho bạn thấy nhánh và không gian làm việc hiện tại trong một cửa sổ nhỏ mà bạn có thể gắn / ghim bất cứ nơi nào bạn muốn.


Nhìn tuyệt vời nhưng không hỗ trợ VS2012
Piotr Kula

3

Tôi đã sử dụng tiện ích mở rộng VSCommands (với Visual Studio 2012, nhưng có phiên bản 2010) và nó thuận tiện đặt tên chi nhánh ở góc trên bên trái của màn hình cũng như vào trình khám phá giải pháp.

Không liên kết với sản phẩm dưới bất kỳ hình thức nào, chỉ là một người dùng hài lòng.


1
Trông thật tuyệt, thật đáng buồn khi bạn phải trả tiền cho tất cả những thứ bổ sung có thể không cần thiết :(
Piotr Kula

2

Tôi tránh làm việc ở nhánh sai bằng cách thực hiện hầu hết mọi thứ trong một nhánh (trong thân cây - theo cái gọi là chiến lược rẽ nhánh "thân cây không ổn định" ).

Các trường hợp khi tôi buộc phải cập nhật các nhánh là khá hiếm - đây là các lỗi trước và sau sản xuất (mã ứng viên prod bị cô lập trong các nhánh). Vì các bản sửa lỗi này cũng phải nằm trong thân cây, tôi thường phác thảo, kiểm tra và xác minh chúng ngay trong thân cây, sau đó chuyển sang nhánh prod. Chuyển như một quy tắc chỉ bao gồm một bản sao đơn giản từ 1 đến 5 tệp để phân nhánh và kiểm tra bản dựng.

  • Tôi cũng hơi may mắn là trong hầu hết các quản lý dự án của tôi ưa thích để thuyết phục khách hàng sử dụng phiên bản mới hơn thay vì vá cũ - điều này mang lại hậu sản xuất một phần của bản cập nhật trong ngành tối thiểu gần như không đáng kể.

Thật sự rất tốt khi không phải duy trì các bản phát hành trước đó. Trong trường hợp đó, tôi chỉ sử dụng một nhánh cho mục đích thử nghiệm.
bá đạo

@henginy Tôi không thể nhớ lại các trường hợp khi tôi không cần phải duy trì các bản phát hành trước đó. Tuy nhiên, thái độ quản lý có thể tạo ra sự khác biệt lớn ở đây: tùy thuộc vào nó, người ta có thể thực hiện 1-2 hotfix / năm ở các chi nhánh cũ hoặc gây rối với một nửa thời gian này
gnat

1

Câu trả lời cụ thể tùy thuộc vào phần mềm kiểm soát phiên bản mà bạn đang sử dụng, nhưng thường có một lệnh cho phép bạn dễ dàng nhìn thấy chi nhánh bạn đang làm việc. Ví dụ: với Subversion, sử dụng svn infolệnh trong thư mục để xem URL cho nhánh đó. Nếu bạn quan tâm hơn đến một tệp cụ thể, bạn cũng có thể chỉ định điều đó:

caleb-dev$ svn info foo.c 
Path: foo.c
Name: foo.c
URL: https://svn.mycompany.com/repo/sample/branches/caleb-dev/foo.c
Repository Root: https://svn.mycompany.com/repo/sample
Repository UUID: d62f7aef-3ad2-6098-12a-c16647d854ab
Revision: 1042
Node Kind: file
Schedule: normal
Last Changed Author: caleb
Last Changed Rev: 1031
Last Changed Date: 2011-06-07 15:28:27 -0400 (Tue, 07 Jun 2011)
Text Last Updated: 2011-06-08 03:08:12 -0400 (Wed, 08 Jun 2011)
Checksum: 123456789098765432123456789098

Từ URL, tôi có thể thấy rằng bản sao foo.c của tôi nằm trong nhánh caleb-dev.

Tôi không cần phải làm điều đó rất thường xuyên vì thư mục địa phương của tôi có cùng tên với chi nhánh. Nhìn nhanh vào dấu nhắc dòng lệnh của tôi thường đủ để xác nhận rằng tôi đang ở đúng thư mục và do đó làm việc ở nhánh bên phải.


1

Đã có rất nhiều câu trả lời, nhưng chưa có câu trả lời nào về giải pháp đơn giản mà chúng tôi có ở nơi tôi làm việc: cho mỗi nhánh, tạo một VM mới chứa môi trường dev và kiểm tra từ nhánh thích hợp. Bạn chỉ phải làm điều đó và làm cho đúng một lần, và sau đó bạn chỉ cần chuyển VM để chuyển nhánh.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.