2012-05-10 41 views
30

Tôi là người dùng Eclipse/Subversion điển hình bắt đầu di chuyển sang Git. Tôi đã nghiên cứu các khái niệm cơ bản của git và đã quyết định gắn bó với một dự án cho mỗi phương pháp tiếp cận kho lưu trữ ban đầu để giữ cho mọi thứ đơn giản. Tuy nhiên, tôi vẫn gặp sự cố, quyết định vị trí đặt kho lưu trữ cho từng dự án.Có tốt hơn là giữ kho Git bên trong hoặc bên ngoài vùng làm việc Eclipse không?

Tôi đã dành rất nhiều thời gian để xem lại câu trả lời cho this question, mặc dù tôi tin rằng tác giả của câu hỏi đó giả định rằng bạn chỉ có thể sử dụng Eclipse để quản lý kho lưu trữ nếu kho lưu trữ nằm trong không gian làm việc Eclipse. tất nhiên, không đúng sự thật. Tuy nhiên, điều khiến tôi nhớ nhất về câu hỏi đó là một câu trả lời (bao gồm cả câu trả lời được chấp nhận) đề nghị giữ kho lưu trữ bên trong vùng làm việc Eclipse, trong khi chỉ có một câu trả lời chỉ ra rằng EGit User Guide đề xuất ngược lại.

Tuy nhiên, thực tế có một số phương pháp được Eclipse/EGit triển khai, một số trong đó có vẻ mâu thuẫn với các khuyến nghị của EGit. Ví dụ, nếu bạn sử dụng New Project Wizard để tạo một dự án PHP mới từ Git và kho lưu trữ là từ xa, Eclipse/EGit sẽ vui vẻ tạo một thư mục dự án trong không gian làm việc Eclipse và đặt kho lưu trữ (.git) vào thư mục dự án. Đây là kết quả cuối cùng mà tôi thực sự muốn, vì nó giữ mọi thứ được gói gọn trong vùng làm việc Eclipse.

Tuy nhiên, nếu bạn sử dụng Trình hướng dẫn dự án mới và chọn kho lưu trữ Git cục bộ, Eclipse/EGit không sao chép kho lưu trữ giống như kho lưu trữ từ xa. Thay vào đó, nó sử dụng bản sao làm việc của kho lưu trữ đó làm vị trí dự án, tạo ra .project và các công cụ meta khác ở vị trí đó và cũng tạo một thư mục mới (dường như không cần thiết) trong bản sao làm việc đó với cùng tên với dự án của bạn (để bạn kết thúc với, ví dụ: ~/git/blah/blah). Nếu bạn xóa thư mục thừa đó kết thúc với một cấu trúc giống với ví dụ đầu tiên, khác biệt duy nhất là thư mục dự án không phải là thư mục con của thư mục không gian làm việc Eclipse của bạn, nó nằm ở đâu đó trên hệ thống tệp của bạn (ví dụ . ~/git/blah). Điều tích cực duy nhất mà cách tiếp cận này dường như là vì nó tuân thủ các khuyến nghị trong Hướng dẫn sử dụng EGit, nhưng từ góc độ kỹ thuật, khó có thể thấy nó thực sự khác với ví dụ đầu tiên như thế nào.

Với những quan sát khó hiểu này, tôi tự hỏi những trải nghiệm mà mọi người đã sử dụng mỗi phương pháp này và những gì có thể xảy ra nếu bỏ qua các khuyến nghị trong Hướng dẫn sử dụng EGit.

+0

bản sao có thể có của [Tôi có nên lưu kho git trong Trang chủ hoặc không gian làm việc Eclipse không?] (Http://stackoverflow.com/questions/7685246/should-i-store-git-repository-in-home-or-eclipse- không gian làm việc) – mallardz

+0

@JamesG Bạn thực hiện phương pháp nào để phản ánh những thay đổi trong không gian làm việc đối với thư mục git của bạn? Có cách nào tốt hơn để sao chép dán mã nguồn? –

+0

Tôi không sử dụng Eclipse nữa - tôi sử dụng PHPStorm - vì vậy tôi chỉ sao chép vào một thư mục dự án và sau đó bắt đầu làm việc trong đó. Tôi không nghĩ rằng PHPStorm thậm chí còn cung cấp tùy chọn để lưu trữ kho lưu trữ trong một thư mục khác cho dự án. Thành thật mà nói, dựa trên những gì tôi đã nghe và đọc kể từ khi đăng câu hỏi này cách đây bốn năm, tôi không nghĩ nhiều người sẽ lưu kho của họ bên ngoài thư mục dự án của họ nữa. – JamesG

Trả lời

17

Ý nghĩa của cả hai giải pháp được liệt kê trực tiếp trong hướng dẫn sử dụng mà bạn đã liên kết. Tôi có thể nói với bạn rằng phần

Điều này có thể dẫn đến hiệu suất phát

là tiếc rất đúng. Vì vậy, nếu bạn có một thư mục git với một số lượng lớn các tệp trong không gian làm việc của bạn, nhiều thao tác git sẽ bắt đầu bằng hộp thoại "đếm đối tượng ..." chặn IDE của bạn vì nó quét tất cả các tệp trong không gian làm việc. Đối với 20000 tệp hiện tại của tôi, điều này có nghĩa là chờ từ 10 đến 20 giây cho mọi cam kết, mọi chuyển đổi, ...

Trong các hoạt động rảnh rỗi, nơi tôi có thể may mắn sử dụng phương án thay thế khác (có thư mục làm việc git bên ngoài không gian làm việc) cảm thấy dễ dàng hơn nhiều và thật thú vị khi hợp nhất và chuyển đổi.

Vì vậy, nếu bạn đi cho các dự án lớn, hãy xem thư mục git bên ngoài vùng làm việc là lựa chọn đầu tiên.

+0

Tôi sẽ thêm rằng Eclipse và EGit tự thiết lập để sử dụng repo git của họ bên ngoài không gian làm việc của họ, và nó đã được làm việc tốt. –

+3

@Bananeweizen Bạn đã đề cập rằng bạn đã thử nghiệm với việc có thư mục làm việc git bên ngoài vùng làm việc và mọi thứ trở nên dễ dàng hơn. Là một trong những thí nghiệm được thực hiện với dự án lớn (20.000 tệp) của bạn hoặc dự án hộp cát nhỏ hơn? Nghĩa là, bạn có thể dứt khoát nói rằng dự án tệp 20.000 hoạt động trơn tru hơn nhiều bên ngoài không gian làm việc? – JamesG

+0

@Bananeweizen Bạn chỉ cần xcopy tất cả mọi thứ vào một thư mục khác, sau đó xcopy nó trở lại kho lưu trữ trước khi làm git thêm? –

3

Tôi đang làm sự di cư giống như các poster ban đầu và đã tìm thấy một chủ đề mà những nghi ngờ tương tự được thể hiện trên các khuyến nghị Egit: Should I store git repository in Home or Eclipse Workspace?

@JamesG Vì vậy, đây là cách bố trí của bạn?

~/projectA/workspace/.metadata 
~/projectA/workspace/subproj1/.project 
~/projectA/workspace/subproj2/.project 
~/projectA/subproj1/.git 
~/projectA/subproj1/file1 
~/projectA/subproj2/.git 
~/projectA/subproj1/file2 
+0

Cảm ơn bạn đã liên kết tới bài đăng đó. Nó tạo ra sự khác biệt lớn giữa việc có nhiều dự án trong một kho lưu trữ git so với một dự án cho mỗi kho lưu trữ. Nếu đi cho cái cũ, thì tôi đồng ý rằng việc đặt repo trong không gian làm việc không có ý nghĩa, bởi vì sau đó thư mục .git ở cùng mức với các dự án, điều đó chỉ cảm thấy sai đối với tôi. Trong trường hợp của tôi, tôi có sự sang trọng trong việc xác định cấu trúc repo, vì vậy tôi đã quyết định một repo cho mỗi dự án, vì vậy mỗi dự án Eclipse là một bản sao của repo. Cách tiếp cận này đã làm việc tốt cho tôi, ngay cả đối với các dự án lớn hơn (ví dụ như ZF2). – JamesG

5

Tại sao không chỉ cho phép 2 khả năng.

Tôi OK cho trường hợp dự án lớn tạo nhiều tệp trong thư mục .metadata. Thậm chí nếu nó khá đơn giản để đặt các dòng .metadata trong .gitignore để inprove biểu diễn.

Nhưng trong trường hợp của tôi (phát triển Android), tôi có khoảng 35 dự án khác nhau chỉ chứa 50 tệp.

Tất cả các dự án này nằm trong các không gian khác nhau chứa dự án ứng dụng và dự án thư viện cho ứng dụng này. (Một kho lưu trữ với các môđun con cho mỗi ứng dụng)

  • Phải Tôi chỉ có một không gian làm việc với tất cả các dự án của tôi bên trong (dành thời gian để cuộn/đóng/mở các dự án trong gói thám hiểm)?

  • Tôi có phải quản lý 2 thư mục cơ sở khác nhau (Dự án và Worskspaces) với thư mục cuối cùng chứa chỉ các thư mục .metadatas của tất cả các dự án của tôi không?

Đối với tôi điều này không có ý nghĩa.

nhắn cho nhóm EGit:

Tại sao thay đổi các nhà phát triển cách thường tổ chức các dự án của họ thư mục:

---- Worspace

---- Worspace/.metada

----- Worspace/.git

----- Không gian/Project1

----- Worspace/LibraryProject1

----- Worspace/LibraryProject2

Tôi hiểu lý do hiệu suất nhưng chỉ 5% các nhà phát triển với các dự án rất lớn (tạo .metadata lớn), bạn chỉ không cho phép chúng tôi cấu trúc các dự án của chúng tôi như Eclipse cho chúng tôi biết từ nhiều năm nay.

thể bạn chỉ cần, ngay cả khi một thông điệp cảnh báo chúng ta rằng là nó không được khuyến khích, không chặn quá trình clone để thư mục worspace ("C: \ Worspaces \ không phải là một thư mục rỗng")

EGit là một công cụ tuyệt vời nhưng tôi thực sự nghĩ đến việc sử dụng cách bừa bãi Bash của giới hạn
này.

Cảm ơn câu trả lời của bạn

PS: Có nhiều trường hợp phát triển khác nhau trong Eclipse. Nếu nó chỉ là một vấn đề hiệu suất và nếu nó không làm cho vụ tai nạn EGit, xin vui lòng chỉ cảnh báo chúng tôi về nó, nhưng không chặn chúng tôi trong trường hợp các dự án nhỏ.

+1

Tôi đồng ý. Plugin EGit hoạt động tốt nhưng đây là một lỗ hổng kiến ​​trúc lớn. Nó phá vỡ tự động hóa vùng làm việc của tôi và không may ngăn tôi chuyển sang sử dụng git. –

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