Tôi đang làm việc trên một dự án mà mọi người có thể gửi câu chuyện và nhờ những người khác đóng góp. Thay vì chỉ chỉnh sửa mục nhập trong cơ sở dữ liệu, tôi muốn lưu trữ những thay đổi mà mọi người thực hiện thay vì toàn bộ các thay đổi mới. Sau đó, tôi có thể tự động áp dụng các diff nếu mọi người muốn hoàn nguyên về phiên bản trước đó. Tôi cũng có thể dễ dàng giới thiệu người dùng là Người chỉnh sửa chỉ với văn bản được sửa đổi để họ có thể chuyển ngay đến các thay đổi.Làm cách nào để tôi có thể phân biệt và vá/hợp nhất các chuỗi thay vì tệp?
Tôi biết cách lấy các tệp khác và vá các tệp khác với chúng. Nhưng tôi đang tạo một ứng dụng web với Python và Django, và tôi sẽ lưu trữ tất cả những khác biệt này trong cơ sở dữ liệu MySQL. Với hiệu suất đó không phải là vấn đề lớn đối với ứng dụng này, tôi đã chuẩn bị để lấy dữ liệu từ DB, tạo tệp và chạy git diff
và patch
trên các tệp đó.
Có cách nào tốt hơn là tạo tệp mới và xóa chúng mỗi khi tôi muốn tạo phiên bản mới hoặc áp dụng một phiên bản mới? Có cách nào để chạy diffs trên văn bản thẳng thay vì các tập tin? Ví dụ. thiết lập các biến trong bash là nội dung của (những gì sẽ là) một tập tin (nhưng thực sự là dữ liệu từ DB), và chạy git diff
trên chúng? Tôi muốn kiểm soát những hành động này từ một tệp Python sau khi người dùng gửi biểu mẫu.
Tôi thực sự đang tìm kiếm một cách tốt để bắt đầu về vấn đề này, vì vậy mọi trợ giúp sẽ được đánh giá cao.
Cảm ơn thời gian của bạn,
ParagonRG
Bạn chắc chắn có thể áp dụng các nguyên tắc lưu trữ diffs thay vì toàn bộ văn bản trong cơ sở dữ liệu, nhưng đó là một chút kỳ lạ mà bạn muốn sử dụng một VCS cho mục đích này. .. (bạn đã xem http://docs.python.org/library/difflib.html) chưa? – geoffspear
Cảm ơn, hãy nhìn vào điều này ngay bây giờ! – Paragon
Thật không may difflib đã không cho phép xây dựng lại văn bản từ diffs trừ khi sử dụng diffs lưu trữ toàn bộ văn bản và thay đổi của nó. Do đó tôi đã xây dựng một mô-đun để làm điều này; xin vui lòng xem câu trả lời của tôi dưới đây. – Paragon