Gần đây tôi đã di chuyển một kho lưu trữ sang git từ svn. Khi tôi nhìn vào nhật ký, tất cả các cam kết từ SVN không được định dạng đúng theo định dạng 50/72. Có cách nào tôi có thể đi qua tất cả các thông điệp cam kết và chỉnh sửa nó để nó phù hợp với định dạng git?Định dạng tin nhắn cam kết
Trả lời
Bạn nói trong một chú thích:
Các kho đã được chuyển qua một tuần trước đây và đã có cam kết trên đó thực hiện trong Git.
Như vậy, tùy chọn tốt nhất là chỉ cần sống với nó và tiếp tục thực hiện các thông báo cam kết chính xác từ bây giờ.
Tất cả các phương pháp sẽ thay đổi thông báo cam kết trong các cam kết cũ sẽ thay đổi các cam kết và tạo đối tượng hoàn toàn mới với các ID khác nhau. Như vậy các kho lưu trữ của tất cả những người đã làm việc với nó sẽ phá vỡ, yêu cầu họ phải tự thiết lập lại trạng thái mới, viết lại của kho lưu trữ.
Điều đó kết thúc chỉ trong rất nhiều công việc (và nhầm lẫn!) Hơn cần thiết cho vấn đề tầm thường của cam kết với một thông điệp cam kết không hoàn hảo đã được di chuyển từ một hệ thống cũ. Tôi nghĩ rằng nó hoàn toàn tốt đẹp để có một số lịch sử cũ, từ những ngày trước, mà không phù hợp hoàn toàn với các tiêu chuẩn hiện hành. Bạn sẽ không viết lại tất cả các cam kết nếu sau này bạn quyết định thay đổi các quy tắc định dạng mã của mình.
Bạn có một điểm. Tôi sẽ để lại lịch sử một mình rồi. – EnactSchmenact
Một tùy chọn là chỉnh sửa các cam kết của bạn trong svn trước khi nhập vào git. Sử dụng svnadmin dump
để tạo phiên bản có thể chỉnh sửa của kho lưu trữ, chỉnh sửa thông báo cam kết ở đó (nếu là tôi, tôi sẽ viết kịch bản Python để thực hiện việc này) và sau đó xây dựng lại kho lưu trữ với svnadmin load
Kho lưu trữ đã được di chuyển hơn một tuần trước và đã có cam kết về nó được thực hiện trong Git. Tôi có phải tái di chuyển repo và sau đó hợp nhất chúng bằng cách nào đó? – EnactSchmenact
Các tệp bãi rác Subversion không phải là "có thể chỉnh sửa con người". Mỗi sửa đổi có một IIRC checksum và nếu bạn cố gắng chỉnh sửa các tập tin thô, bạn sẽ kết thúc phá vỡ các tập tin. 'svnadmin setlog' là công cụ thích hợp để sử dụng cho việc thay đổi các thông điệp tường trình trong một kho lưu trữ (không cần dumpfile). – alroc
Điểm tốt về setlog. Nó vẫn còn tranh luận. –
Bạn sẽ cần git filter-branch
. Đó là man page khá rõ ràng.
Sử dụng tùy chọn --msg-filter
dự kiến lệnh vỏ sẽ nhận được thư gốc trên stdin
và sẽ xuất thông báo đã sửa đổi thành stdout
. Tạo tập lệnh sẽ sửa định dạng tin nhắn của bạn là một câu hỏi riêng biệt =).
Nếu bạn định sửa chúng bằng tay, thì chỉ cần thực hiện git rebase -i --root
, đặt hành động thành reword
. Điều này sẽ đi qua toàn bộ lịch sử cam kết mở trình soạn thảo văn bản của bạn cho mọi cam kết và cho phép bạn thay đổi thông điệp cam kết.
Aye; nên nghĩ về điều này. Đây là cách để làm điều đó. –
- 1. Gắn thẻ cam kết tin nhắn và thay đổi
- 2. Đồ họa trong GitHub cam kết tin nhắn
- 3. Số phát hành Jira trong tin nhắn cam kết git
- 4. Kích thước tin nhắn cam kết tối đa
- 5. Github cam kết tin nhắn tới Skype chat bot
- 6. Sử dụng git filter-branch để loại bỏ các cam kết bằng tin nhắn cam kết của họ
- 7. Định dạng Mùa xuân: đối số tin nhắn
- 8. Làm cách nào để tạo Mẫu Tin nhắn Cam kết SVN và Móc để Xác minh
- 9. Kết nối WCF net.tcp, định dạng tin nhắn và câu hỏi bảo mật
- 10. Cam kết khi thay đổi định dạng nguồn?
- 11. git định dạng-vá mà không cam kết
- 12. Sử dụng markdown trong subversion cam kết tin nhắn - bất kỳ suy nghĩ?
- 13. Tại sao git nhắc tôi cho một tin nhắn cam kết hợp nhất sau khi kéo?
- 14. Git to svn: Thêm ngày cam kết để đăng nhập tin nhắn
- 15. Tự động gửi tin nhắn cam kết Git dài trong Vim
- 16. Nhận tin nhắn cuối cùng hoặc sự khác biệt của CVS cuối cùng cam kết
- 17. Làm cách nào để đổi tên tin nhắn cam kết trong Git?
- 18. Cách giải quyết vấn đề JIRA từ GitHub cam kết tin nhắn?
- 19. git am nên bỏ qua một cái gì đó trong tin nhắn cam kết bắt đầu với "[]"?
- 20. Cách thuận tiện để thêm định dạng nội tuyến vào tin nhắn sử dụng
- 21. Định dạng tin nhắn để gửi tới máy chủ socket.io node.js từ máy khách python
- 22. Định dạng slf4j để ghi lại các loại tin nhắn với màu sắc
- 23. Cấu trúc tin nhắn AMF?
- 24. Làm cách nào để tìm kiếm các commit git trong kho lưu trữ bằng tin nhắn cam kết?
- 25. Sử dụng bộ lọc git-branch để viết lại tác giả/ủy thác và cam kết tin nhắn đồng thời
- 26. Làm thế nào để có được danh sách tất cả các tin nhắn cam kết SVN gần đây?
- 27. Gửi tin nhắn SMS/Tin nhắn văn bản qua PHP
- 28. SVN - pre-cam kết nối để kiểm tra mã định dạng
- 29. SignalR gửi tin nhắn tới một kết nối duy nhấtId
- 30. Nhiều tin nhắn trên iPhone APN, kết nối đơn
Đừng lo lắng về điều đó. Chỉ cần di chuyển và làm điều đó đúng cho các thư cam kết mới. Kiểm soát nguồn được cho là hỗ trợ luồng công việc của bạn, không làm cho việc này khó hơn. Có, thư cam kết không được định dạng chính xác. Nhưng đó thực sự là một vấn đề lớn? – Abizern
Chỉ bằng cách _having_ cam kết thư bạn đang đi trước đường cong. Nó là khá phổ biến để xem chỉ là một cam kết khổng lồ với thông điệp "di cư từ svn" – gcbenison
[Đối với những người không biết những gì "định dạng 50/72" là] (http://stackoverflow.com/q/2290016/1324345) – alroc