2012-07-11 27 views
5

Tôi đang nghĩ đến việc Mask như trong một Mask mạch (tôi nghĩ) - hãy để tôi giải thích với một biểu đồ tiện dụngCó một thứ như mặt nạ hệ thống tập tin không?

mask chart

Nguồn gốc phổ biến sẽ là thể chất trong c:\source

Instance A sẽ được thể chất trong c:\instanceA nhưng ban đầu không có gì ngoài các liên kết tượng trưng cho mọi thứ trong c:\source

Ví dụ B sẽ là vật lý ở c:\instanceB nhưng ban đầu không có gì khác ngoài liên kết đến mọi thứ trongKhi bạn thay đổi Instance A và Instance B, bạn sẽ tạo một mặt nạ ẩn các tệp từ CommonSource nếu chúng bị xóa khỏi các thư mục Instance và tạo một tệp vật lý mới trong thư mục cá thể nếu một Common hiện có Tệp nguồn đã được sửa đổi. Các tệp mới sẽ tồn tại trong các thư mục cá thể nhưng không bao giờ quay trở lại Nguồn chung.

Loại thiết lập này sẽ rất hữu ích cho một dự án mà tôi muốn thực hiện nhiều loại chỉnh nhỏ khác nhau cho nhiều trường hợp mà các chuỗi riêng biệt sẽ hoạt động trên các trường hợp riêng biệt.

Tôi biết về các liên kết tượng trưng nhưng chúng thiếu trong trường hợp sửa đổi tệp.

Có điều gì có thể thực hiện được điều này không? Nếu không, tôi có nên cố gắng thực hiện điều này và bằng sáng chế không? Có vẻ đó là ý tưởng hay cho tôi.

Tôi sẽ sử dụng Windows Server 2008 trở lên.

+0

Để trả lời câu hỏi cuối cùng của bạn, về bằng sáng chế: * không *. –

+0

Câu hỏi thực sự là: Bạn có vấn đề với kích thước dữ liệu hay bạn gặp vấn đề với việc quản lý các "phiên bản" này? Một câu trả lời hữu ích nên giải quyết những khía cạnh này. –

Trả lời

8

Sợ tôi đang nói rõ ràng, nhưng git là một công cụ có thể được sử dụng để đạt được hành vi này.

  1. Hãy "Nguồn chung" của bạn một kho git
  2. Clone kho hai lần để "InstanceA" và "InstanceB"
  3. Trong mỗi trường hợp, hãy kiểm tra một mới, chi nhánh độc đáo

Khi các thay đổi được thực hiện trong "Nguồn chung", bạn có thể hợp nhất các thay đổi đó thành "InstanceA" và "InstanceB" trong khi vẫn duy trì "MASK" (các thay đổi đối với chi nhánh) bạn đã tạo cho mỗi.

này được lợi ích bổ sung cho phép thay đổi từ "Nguồn chung" là kéo như bạn muốn thay vì phải thay đổi để "Common Source" đẩy ra mỗi trường hợp (cái gì tôi tưởng tượng sẽ kém hấp dẫn và dễ bị lỗi hơn).

+0

Điểm tốt, nhưng khi tôi sao chép bản ghi nhớ, tôi có đang tạo bản sao thực của các tệp trên hệ thống tệp không? – Matt

+0

Có, 'InstanceA' và' InstanceB' bắt đầu như bản sao giống hệt nhau của 'Common Source' - liên kết" "là kho git, có thể quản lý các chuyển hướng từ' Common Source' trong mỗi cá thể trong khi vẫn cho phép thay đổi từ 'Common Source 'xuất hiện trong mỗi cá thể * (khi được hợp nhất bằng git) *. – deefour

+0

Bạn có thể đạt được cùng với Subversion quá và cho là với rất nhiều rắc rối ít hơn. Điều duy nhất tôi sẽ thêm là để đạt được hành vi mà bạn muốn, bạn sẽ Checkout kho lưu trữ đến hai vị trí InstanceA và InstanceB và sau đó không bao giờ Cập nhật chúng hoặc Cam kết chúng. Nếu bạn đã thực hiện Update, thì thư mục đó sẽ nhận được tất cả các thay đổi từ Common trong khi vẫn giữ lại các thay đổi của chính nó và nếu bạn đã thực hiện một Commit, nó sẽ đẩy lùi các thay đổi của nó và hợp nhất chúng vào các tệp Common. –

1

Vì Windows 7 bạn có thể sử dụng libraries, điều này sẽ cho phép bạn bao gồm các tệp từ nhiều vị trí thực tế.

Windows 7 cũng bao gồm loại thư mục ảo (ví dụ, khi tạo hoặc sửa đổi tệp trong thư mục Tệp Chương trình, nó sẽ thực sự được tạo trong thư mục người dùng cụ thể: C: \ Users \ user \ AppData \ Local \ VirtualStore.Tuy nhiên - Tôi không biết làm thế nào bạn có thể tạo loại thư mục này cho mình, và, theo như tôi biết, bạn có thể thêm và sửa đổi các tập tin, nhưng không xóa các tập tin theo cách đó.

+0

Tôi đã bị xé rách để trao giải thưởng cho - Nếu tôi có thể chia nó, bạn sẽ nhận được 1/3 số tiền đó, tôi không thể đi cùng với cộng đồng đã bỏ phiếu. Cảm ơn mặc dù – Matt

+0

Cảm ơn @Matt. Cộng đồng là quyền sử dụng kiểm soát nguồn có nhiều lợi thế, mặc dù đây không phải là những gì bạn đã yêu cầu. Một giải pháp thực sự tốt đẹp sẽ là sự kết hợp của cả hai ý tưởng - một khách hàng kiểm soát nguồn nhận thức được thực tế rằng các bản sao cục bộ có nhiều điểm chung và sẽ thông minh về việc quản lý các điểm tương đồng và khác biệt theo cách bạn mô tả. –

1

Bạn sẽ muốn có hệ thống kiểm soát phiên bản hỗ trợ cho mỗi lần kiểm tra tệp và quyền. Sau đó, bạn chỉ cần thiết lập một trình chuyển đổi API đơn giản có các lệnh hệ thống tập tin và chuyển đổi chúng thành các lệnh điều khiển phiên bản.

Xóa -> tắt quyền truy cập tệp.

Lệnh thư mục phải tìm các bản sao cục bộ và những thứ bạn có quyền truy cập.

Mở -> lấy bản sao cục bộ, trên tệp kiểm tra không thành công từ kho lưu trữ.

Lưu -> tắt quyền, lưu bản sao cục bộ. // Tránh trùng lặp được nhìn thấy.

Đóng mà không lưu -> nếu quyền truy cập từ kho lưu trữ, hãy xóa bản sao cục bộ.

((By the way, tối ưu hóa lưu trữ này có vẻ hơi giả mạo cho versioning. Không gian đĩa là tương đối rẻ.

Nếu quan tâm của bạn không có trong phiên bản, tôi muốn đề nghị xem xét vào tách ra thông tin mà bạn sẽ Điều này, tất nhiên, đòi hỏi một mẫu có thể dự đoán được cho các thay đổi.))

1

IBM Rational ClearCase là hệ thống điều khiển phiên bản có hành vi giống như mặt nạ tập tin. Nó được gọi là MVFS: MultiVersion File System và có thể được gắn kết với một máy trạm như một ổ đĩa mạng thông thường.

Máy chủ ClearCase (còn gọi là VOB), bạn có thể lưu trữ nhiều phiên bản của cùng một tệp, mỗi phiên bản trên chi nhánh mã khác nhau. Tập hợp các tệp hiển thị bởi người dùng được gọi là chế độ xem. Mỗi khung nhìn có một cấu hình (hay còn gọi là đặc tả cấu hình), xác định những tập tin và phiên bản nào được hiển thị cho người dùng hiện tại. Tệp thông thường trông giống như sau:

# From wikipedia: http://en.wikipedia.org/wiki/IBM_Rational_ClearCase#Configuration_specifications 
# Show all elements that are checked out to this view, regardless any other rules. 
element * CHECKEDOUT 

# For all files named 'somefile', regardless of location, always show the latest version 
# on the main branch. 
element .../somefile /main/LATEST 

# Use a specific version of a specific file. Note: This rule must appear before 
# the next rule to have any effect! 
element /vobs/project1/module1/a_header.h /main/proj_dev_branch/my_dev_branch1/14 

# For other files in the 'project1/module1' directory, show versions 
# labeled 'PROJ1_MOD2_LABEL_1'. Furthermore, don't allow any checkouts in this path. 
element /vobs/project1/module1/... PROJ1_MOD2_LABEL_1 -nocheckout 

# Show the 'ANOTHER_LABEL' version of all elements under the 'project1/module2' path. 
# If an element is checked out, then branch that element from the currently 
# visible version, and add it to the 'module2_dev_branch' branch. 
element /vobs/project1/module2/... ANOTHER_LABEL -mkbranch module2_dev_branch 
+0

Tôi đã bị xé rách để trao giải thưởng cho - Nếu tôi có thể chia nó, bạn sẽ nhận được 1/3 số tiền đó, tôi không thể đi cùng với cộng đồng đã bỏ phiếu. Cảm ơn mặc dù – Matt

+0

Không có vấn đề :) Rất vui được trợ giúp. –

2

Bạn đang tìm kiếm union mount. Thật không may, tôi không nhận thức được bất kỳ triển khai nào cho Windows, nhưng có một vài ứng dụng có sẵn cho Linux, đặc biệt là UnionFS.

Nói chung chúng được sử dụng để tạo hệ thống tệp chỉ đọc giống như đọc-ghi: thường là trên đĩa CD trực tiếp.

+0

Tôi đã bị xé rách để trao giải thưởng cho - Nếu tôi có thể chia nó, bạn sẽ nhận được 1/3 số tiền đó, tôi không thể đi cùng với cộng đồng đã bỏ phiếu. Cảm ơn mặc dù – Matt

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