2012-05-02 21 views
6

Tôi có một bài tập lập trình để giao tiếp vào Đại học vào cuối tuần này và họ có những quy định nghiêm ngặt về tính ẩn danh của bài tập để duy trì tính khách quan, vì vậy nếu tên của tôi (hoặc bất kỳ thông tin nhận dạng rõ ràng khác) xuất hiện ở bất kỳ đâu trong công việc nó có thể tự động bị loại.Làm cách nào để ẩn danh một kho lưu trữ thủy ngân?

Trong khi chuẩn bị ghi tất cả mọi thứ vào đĩa, tôi vừa mới nhận thấy/nhớ rằng HG repo của tôi là đầy đủ bản sao tên của tôi. Mã là tất cả sạch sẽ, nhưng tác giả của mỗi changeset là hoặc tên đầy đủ của tôi và email hoặc ID đăng nhập đại học của tôi và tên máy của một phòng thí nghiệm máy tính (phụ thuộc vào nơi tôi đã làm việc).

Tôi cần tạo phiên bản ẩn danh của repo (hoặc hoán đổi tất cả tên cho số ID sinh viên của mình) mà không làm mất bất kỳ thông tin nào khác mà nó nắm giữ.

Vì vậy, như dòng tiêu đề cho biết, làm thế nào để ẩn danh một kho lưu trữ thủy ngân?

Trả lời

8

Bạn có thể sử dụng số Convert extension của Mercurial với số --authors option để "chuyển đổi" kho lưu trữ của bạn thành kho lưu trữ Mercurial mới, thay đổi tên của tác giả trong quá trình chuyển đổi.

Trích từ liên kết thứ hai:

Chuyển đổi cũng có thể remap tên tác giả trong quá trình chuyển đổi, nếu tùy chọn --authors được cung cấp. Đối số phải là một tệp văn bản đơn giản ánh xạ từng nguồn cam kết tác giả đến đích tác giả cam kết. Nó rất tiện lợi cho các SCM nguồn sử dụng các đăng nhập UNIX để xác định các tác giả (ví dụ: CVS). Ví dụ:

john=John Smith <[email protected]> 
tom=Tom Johnson <[email protected]> 
+0

Xin cảm ơn, công việc này rất tốt. Một vài điểm cảnh báo cho người khác mặc dù: (1) có vẻ như bạn cần phải liệt kê tất cả tên người dùng một cách riêng biệt và chính xác (vì vậy cần một chút làm việc trước để đối chiếu) (2) ID của nhiều changesets đã được sửa đổi (3) có lẽ vì 2, một changeset bổ sung đã được tạo để sửa các thẻ trong repo. – DMA57361

+3

@ DMA57361: 1) Sử dụng 'hg log --template '{author} \ n' | sắp xếp -u' để lấy danh sách tên người dùng duy nhất, 2) ID thay đổi được tạo bằng cách sử dụng hàm băm mật mã (SHA-1) (trong số những thứ khác) lấy tên người dùng làm đầu vào, 3) Chính xác! –

+0

@MartinGeisler (1) đã giúp ngày hôm qua :), nhưng may mắn là tôi chỉ phải thu thập 4 tên người dùng trong trường hợp này. (2) Tôi đã nhận thức được, nhưng nghĩ rằng tôi muốn thêm nó như là một cảnh báo cho độc giả trong tương lai, như có lẽ nó sẽ dừng repo chuyển đổi bao giờ được đẩy/sáp nhập/etc trở lại vào bản gốc? – DMA57361

1

Nếu bạn không có bất kỳ thay đổi hợp nhất nào, bạn có thể thử sử dụng lệnh graft trong Mercurial 2.0 để ghép kho lưu trữ của bạn vào kho lưu trữ mới trong khi thay đổi tên người dùng đã ghi.

Nếu bạn có các thay đổi hợp nhất, thì có thể sử dụng phần mở rộng transplant trong Mercurial 2.2, mặc dù việc thay đổi tên người dùng được ghi có vẻ khó hơn.

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