Cập nhật các mô-đun với drush mà không phá vỡ SVN?


8

Phải, điều này đã phá vỡ tôi trong hai ngày. Tôi không thể nhận được câu trả lời ở bất cứ đâu!

Tôi có drush 4.4 trên máy chủ của tôi. Tôi đang sử dụng SVN qua Unfuddle.com. Tôi có một trang web, tôi muốn cập nhật rất nhiều mô-đun. Tôi muốn chỉ cập nhật mã, sau đó kiểm tra xem nó có hoạt động không (sau đó cập nhật DB không phải là vấn đề đáng lo ngại) sau đó cam kết mã có liên quan.

Trước đây, drl dl chỉ đơn giản là tải mã mô-đun lên trên đỉnh của mô-đun cũ mà không xóa nó. Điều này không còn là trường hợp nữa. Bây giờ, AFAICT, drush xóa thư mục mô-đun và thay thế nó bằng phiên bản mới hơn. Đó là tất cả tốt và tốt, bởi vì nó giải quyết vấn đề của các tập tin cũ không còn trong mô-đun cập nhật bị bỏ lại.

Tuy nhiên, bằng cách sử dụng các lệnh drush dl hoặc upc, tôi bị kẹt, vì chạy các lệnh này thực sự có phiên bản mới hơn, nhưng nó phá hủy thư mục dữ liệu SVN trong quá trình, khiến tôi gặp vấn đề "! Module / file.php" ở mọi nơi các tập tin không còn ở đó nữa.

Tôi đã được thông báo rằng "drush upc / dl modulename --version-control = svn" nên hoạt động, nhưng không được. Dữ liệu SVN vẫn bị hủy.

Điều này khiến tôi gặp ác mộng tiềm ẩn khi phải: svn del module, svn commit -m "Loại bỏ mô-đun", mô-đun drush dl, (kiểm tra mô-đun), svn thêm mô-đun, svn commit -m "Mô-đun đã thêm" - cho mỗi một mô-đun, đó là một kinh dị tổng số.

Tôi không muốn thiết lập drush để tự động thực hiện các thay đổi của mình, tôi chỉ muốn tải xuống và cam kết tất cả bằng tay vào cuối khi tôi hài lòng với các thay đổi. Điều này không khó lắm, nhưng đơn giản là tôi không thể làm việc được.

Tôi cũng đã được thông báo rằng việc chuyển sang git (vâng, tôi biết rằng việc hỗ trợ git!) Cũng là một giải pháp, nhưng nó không phải là một giải pháp tức thời và không thỏa đáng tại thời điểm này.

Bất cứ ai có thể làm sáng tỏ về điều này?!


Có thể dễ dàng hơn để học git.
chrisjlee

Câu trả lời:


6

bởi vì chạy các lệnh này thực sự có được phiên bản mới hơn, nhưng nó phá hủy thư mục dữ liệu SVN trong quy trình, để lại cho tôi "! module / file.php"

Tôi đang chạy Drush 4.4 và điều này dường như không đúng với tôi. Chạy drush upchoặc drush upgiữ cho .svnthư mục của bạn nguyên vẹn. Bạn có thể svn statusxem lại các thay đổi đối với các mô-đun. Các tập tin mới được chỉ định bởi ?và các tập tin bị loại bỏ được chỉ định bởi !.

Kiểm tra chức năng trang web của bạn. Khi bạn hài lòng rằng các mô-đun vẫn hoạt động chính xác, sau đó bạn có thể thêm / xóa svn bằng một đoạn mã như sau:

thêm vào:

svn status | grep '^\?' | cut -c8- | while read f; do svn add "$f"; done

tẩy:

svn status | grep '^\!' | cut -c8- | while read f; do svn rm "$f"; done

Có lẽ "phá hủy dữ liệu svn" là một lỗi của tôi - trước đây, tôi không thấy bất kỳ! nhưng chỉ?, mà tôi hợp lệ svn thêm vào. Đây có lẽ là một điểm thiếu hiểu biết về phía tôi. Tôi cho rằng đó là sự kỳ vọng về sự dễ dàng của cách mà tôi đã làm việc trước đây, đó là (do một cái gì đó đã được sửa trong drush) thực sự sai lầm.
NikLP

4

Bạn nên thêm --svnsyncvào lệnh của bạn.

Thí dụ :

 drush pm-update module_to_update --version-control=svn --svnsync 
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.