Quản lý trang web với Git


8

Tôi đang bắt đầu sử dụng Git để quản lý các bản dựng trang web Joomla và tôi đang tìm kiếm một số hướng dẫn thực hành tốt nhất. Như nó đứng:

  • Sử dụng WHM để cung cấp một tài khoản mới. Tôi đã viết một hook sau khi cài đặt để tự động tải xuống Joomla từ Github và đặt nó vào public_htmlthư mục có liên quan , cũng như tạo cơ sở dữ liệu và người dùng DB
  • Cài đặt thủ công Joomla thông qua giao diện web (mặc dù hiện đang tìm cách tự động hóa việc này)
  • Thiết lập một repo trần ở trên public_html- đây là nơi người dùng đẩy và kéo từ đó. Chúng tôi sẽ gọi đâyorigin
  • Thiết lập một repo tiêu chuẩn trong public_html
  • Thêm một Joomla cụ thể .gitignore
  • Chỉ định repo trần làm điều khiển từ xa ( git remote add origin ../repo.git)
  • Thực hiện git add ., sau đó git commit -m"Initial J! Commit", git push origin masterđể có được cài đặt mặc định trong repo trần của chúng tôi
  • Thêm một post-receivehook vào repo trần để tự động kéo các thay đổi vào repo trong public_html(vì repo trần là nơi các nhà phát triển sẽ đẩy các thay đổi cục bộ đến)
  • Thêm một post-updatehook vào repo trong public_htmltrường hợp bất kỳ ai thực hiện thay đổi trên máy chủ ... mặc dù họ không nên

Hiện tại tôi không quá lo lắng về cơ sở dữ liệu. Vấn đề chính của tôi bây giờ là xử lý các thay đổi / bổ sung tệp Joomla. Rõ ràng khi tôi cài đặt các mẫu và phần mở rộng, một số tệp sẽ được thêm và xóa. Tương tự cập nhật Joomla sẽ gây ra thay đổi.

Cách tốt nhất để đối phó với những thay đổi trên máy chủ này là gì? Tôi đã nghĩ đến việc viết một plugin nhỏ mà chạy onAfterRenderhoặc tương tự mà sử dụng PHPGit để thực hiện git add ., git commit git push origin master. Sau đó, trong bản sao địa phương của tôi, tôi chỉ có thể kéo và mọi thứ đi qua. đây có phải là cách tốt hơn không?

Câu trả lời:


4

Tôi không hiểu tại sao bạn thiết lập cấu trúc trần / công khai;

Tôi chỉ sử dụng public_html làm gốc của repo, với một .gitignore rất đầy đủ (cần được cập nhật sau mỗi bản cập nhật Joomla! Mới, với git statusbạn tìm các tệp mới và thêm chúng để chúng không bị phiên bản).

Các nhà phát triển đẩy đến các ngành phát triển; cuối cùng khi một bản phát hành được chấp thuận, nó đã phản đối chủ, được thử nghiệm và đẩy vào sản xuất.

Tôi không sử dụng hook nhưng có một vài tập lệnh kết xuất các phần cơ sở dữ liệu có liên quan mà tôi muốn chia sẻ, nhưng để nó cho người dùng chạy các tập lệnh nhập nếu họ muốn; bằng cách này nếu ai đó đang làm việc trên một tiện ích mở rộng mới, họ sẽ giữ cấu hình của mình cho đến khi họ sẵn sàng chia sẻ.

Nếu bạn sử dụng ít / sass, bạn có thể muốn chạy biên dịch trong hook-commit-hook để đảm bảo các cờ nén luôn được bật trên máy chủ.

- cập nhật: .gitignore -

Tôi không thể chia sẻ .gitignore của mình ở đây vì nó có thể thay đổi với mọi Joomla! cập nhật. Trước hết, hãy đảm bảo nhật thực Master .gitignore của tôi trông như thế này đối với một trang web có các thành phần khó chịu ghi thay đổi vào các thư mục của riêng họ thay vì bộ đệm và tmp; cộng với nó sử dụng sass:

*/.sass-cache
/components/com_sobipro/var/cache/*
/components/com_djclassifieds/images/*
/components/com_sobipro/tmp/*
/components/com_sobipro/var/*
/log
/._db.sql
/logs
/stats
/components/com_sobipro/tmp/edit/*
/.buildpath
/.project
/.settings
/.htaccess
/images/icons/*
/images/photos/*
/images/sobipro/*
/images/classifieds/*
/administrator/cache/*
/tmp/*
/configuration.php
/index.php
/joomla.xml
*.txt

vì vậy tôi bắt đầu bằng cách sao chép nó (từ web root):

cp /home/_core/.gitignore .

Sau đó, nổ gói cập nhật (gói cập nhật đầy đủ) và chạy ở đó

find | sed "s/^\.//"  >> /home/yoursitefolder/public_html/.gitignore

CẢNH BÁO không chạy tìm trên trang web trực tiếp, chỉ trên gói cập nhật!

Thực hiện một vài thử nghiệm và xem với trạng thái git sẽ được thêm vào mỗi lần trước khi bạn hoàn tất quy trình và viết các tập lệnh bash cho nó: đây là những gì tôi đang sử dụng nhưng không đảm bảo rằng nó sẽ phù hợp với yêu cầu của bạn 100%


Cảm ơn câu trả lời của bạn - bạn có sẵn sàng công khai .gitignorekhông? Hiện tại tôi là nhà phát triển duy nhất và tôi khá mới đối với Git vì vậy tôi đã theo dõi một số hướng dẫn quy trình làm việc của nhà phát triển web trực tuyến để đưa tôi đến nơi tôi đang ở, dẫn đến cấu trúc công khai / trần trụi.
mã hóa

Không, tôi sẽ không dán nó ở đây; Tôi vừa thêm hướng dẫn để tạo nó
Riccardo Zorn

Xin chào Riccardo - cảm ơn bạn, tôi đã có một khá đầy đủ .gitignore, chỉ muốn thấy bất kỳ sự khác biệt.
mã hóa

Bạn có thể bỏ qua các thư mục trên toàn cầu, ví dụ: để bỏ qua các thư mục bộ đệm ở mọi nơi, chỉ cần thêm cache/vào .gitignore của bạn
jackJoe 19/03/2015
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.