2012-04-21 37 views
6

Tôi đang sử dụng EGit trên một tập hợp khá lớn và phức tạp các dự án Java (hơn một triệu dòng mã) và một giá trị thập kỷ của lịch sử.
Ở đây tôi đang đối mặt với các vấn đề nghiêm trọng về hiệu suất với EGit, vì ngay cả một thay đổi nhỏ trong dòng Java cũng khiến EGit phải lập lại chỉ mục trong vài phút làm chậm toàn bộ hệ thống. Thật vậy, ngay cả dòng lệnh git hơi chậm khi "trạng thái git" mất khoảng một phút từ dòng lệnh, nhưng tôi có thể sống với vấn đề hiệu suất này, & Vấn đề về tốc độ hộp thoại cam kết của EGit (link). Như tôi có thể sử dụng dòng lệnh git để commit, và update, nhưng tôi không muốn tradeoff hiệu năng Eclipse của tôi vì điều đó ảnh hưởng đến năng suất.Gợi ý về tối ưu hóa EGit trên Eclipse

Sau đây là những gì tôi đã cố gắng bằng cách làm Googling và yêu cầu mọi người xung quanh:

  1. Added thư mục tất cả các lớp trong file loại trừ. Thật vậy, cố gắng đưa các lớp học vào thư mục .gitignore cũng như thời gian.
  2. Gave Egit đủ thời gian để hoàn thành việc lập chỉ mục bằng cách giữ máy BẬT trong một ngày.
  3. Phân đoạn Git, lịch sử và tất cả các chế độ xem Eclipses khác được đóng trong bàn làm việc của Eclipse trong khi phát triển.
  4. Đã "git gc" - Nó tạo sự khác biệt về hiệu suất của dòng lệnh, nhưng hầu như không có bất kỳ sự khác biệt nào đối với EGit.
  5. Nhãn trang trí không được chọn cho Git. Tùy chọn -> Chung -> Giao diện -> Trang trí nhãn.
  6. Đã xóa cygwin khỏi đường dẫn, như đã đọc ở đâu đó trong diễn đàn mà JGit có thể đang sử dụng Cygwin để chuyển đổi đường dẫn.
  7. Tăng bộ nhớ cache cửa sổ từ 10 đến 70m trong Eclipse (Tùy chọn -> Nhóm -> Git -> bộ đệm cửa sổ).

PS: Kho lưu trữ Git trỏ đến kho lưu trữ từ xa svn. Ngoài ra, tôi là git newbie vì vậy có thể đã làm một số sai lầm trong thiết lập, vì vậy xin vui lòng chỉ ra bất cứ điều gì.

Đây là thông tin hệ thống của tôi, tôi không có nhiều thông số kỹ thuật phần cứng ưa thích, nhưng một số RAM để rảnh (8GB).

  • phiên bản git-gui 0.16 GITGUID
  • git phiên bản: 1.7.10.mysysgit.1
  • JDK 1.6_025
  • Eclipse phiên bản: 3.7.2 Java EE phiên bản với các thông số -Xms1536m -Xmx1536m
  • EGit: 1.3.0.201202151440
  • Windows 7 Processor: Core 2 Duo 2.6GHz

Trả lời

0

Đó là vấn đề giữa CVCS (VCS tập trung) và DVCS (Phân phối) VCS:

  • Một repo SVN có thể chứa dữ liệu GB.
  • một repo Git phải được giữ nhỏ và tận dụng lợi thế của submodules để đại diện, thông qua nhiều repo Git.

Tôi nghi ngờ rất nhiều repos có thể hoạt động tốt hơn một repo Git khổng lồ. Nếu không, các sự cố đồng bộ hóa sẽ bắt đầu xảy ra, như trong bug 323839.

Nhưng điều đó có nghĩa là quản lý đồng bộ hóa (đơn giản) giữa repo Git và repo SVN theo cách thủ công, thông qua không gian làm việc SVN mà bạn đang sao chép từ repo của bạn, hoặc bạn sao chép Git repos diễn biến mới trở lại SVN không gian làm việc để cam kết.

+1

VonC - Đồng ý, nhưng có một số vấn đề với việc thực hiện Egit chắc chắn, như cùng một git repo lớn thực hiện khá tốt trên hộp Linux với IntelliJ), mặc dù tôi đồng ý hệ thống tệp Linux nhanh hơn nhiều. Vì vậy, tôi có thể tạo một repo Git trung tâm là bản sao của SVN, và sau đó có nhiều repo Git nhỏ từ repo trung tâm khổng lồ? – Hemant

+0

@Hemant no, bạn không thể (không có khả năng cam kết trở lại repo SVN). Bạn có thể định nghĩa một repo Git khai báo tất cả các gói nhỏ như submodules, nhưng sẽ không có bất kỳ liên kết nào với repo SVN. Đó là một cơ chế đồng bộ hóa thủ công. – VonC

+0

Vonc - Cảm ơn bạn đã làm rõ. Tôi sẽ tiếp tục khám phá các tùy chọn của tôi ... tôi cũng hy vọng nhóm Egit sẽ thực hiện một số điều chỉnh hiệu suất nhanh hơn. – Hemant

3

Điều này có lẽ không hoàn toàn là vấn đề của bạn nhưng trang này xuất hiện trên google liên quan đến hiệu suất egit. Khi nguồn của các vấn đề hiệu suất là các tập tin không được lập chỉ mục (được lập chỉ mục?). Hãy chắc chắn rằng bạn không có số lượng lớn các tệp không được theo dõi trong cây thư mục cục bộ vì điều này ảnh hưởng nghiêm trọng đến hiệu suất egit. Tôi đã xóa một đạo diễn có các tệp 10K + và thực hiện cam kết mất từ ​​1 phút trở lên để mở hộp thoại cam kết thực hiện một vài giây.

+0

Tôi không có bất kỳ tệp nào không được theo dõi trong kho lưu trữ của mình. Tôi đang làm việc trên kho lưu trữ khổng lồ có khoảng ~ 28k tệp Java và 136k cam kết, nhưng hầu hết trong số chúng phải được đóng gói rồi. – Hemant

+0

Thử nhân bản 'git: // git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git'. Một hạt nhân Linux kiểm tra có khoảng 45k tập tin và hạt nhân có cách hơn 300k cam kết. Một repo với 28k tập tin và 136k cam kết là một lớn, không lớn. –

+0

Đối với một repo lớn, hãy thử nhân bản 'https: // github.com/mozilla/gecko-dev.git'. Bản sao sẽ cần chuyển khoảng 1,5 GB dữ liệu qua dây một mình ... –