2015-06-13 18 views
7

Tôi đang làm việc trên một usercript cho Firefox, vì vậy tôi sử dụng GreaseMonkey. Hơn nữa, để tạo thuận lợi cho sự phát triển, tôi sử dụng git để cập nhật các phiên bản khác nhau của mã của tôi.Làm thế nào để làm việc chính xác trên một người dùng GreaseMonkey bằng git?

Bây giờ, hãy để tôi cố gắng giải thích vấn đề.

Khi tôi thêm vào GreaseMonkey usercript từ thư mục git cục bộ của tôi, thì các tệp mới được tạo trong thư mục gm_scripts trong tiểu sử Firefox của tôi.

GreaseMonkey sử dụng các tệp này dưới dạng nguồn chứ không phải thư mục git của tôi, vì vậy nếu tôi muốn sửa đổi mã của mình và kiểm tra một số nội dung, tôi phải thay đổi tệp trong gm_scripts. Điều này có nghĩa rằng tôi không thể cam kết sửa đổi, trước tiên tôi phải sao chép các tập tin từ gm_scripts vào thư mục git của tôi. Điều này thực sự không tiện lợi.

Có một giải pháp khác. Tôi cũng có thể sửa đổi kịch bản từ thư mục git của tôi, và sau đó cài đặt lại nó vào GreaseMonkey bằng cách sử dụng một bookmark trỏ đến các tệp cục bộ này. Nhưng một lần nữa, điều này không có ích chút nào.

Điều tôi nghĩ thứ ba là xác định thư mục bên trong gm_scripts làm thư mục git của tôi. Thật không may, dự án của tôi chứa nhiều tệp mà tôi đã đặt hàng vào các thư mục và tôi muốn giữ nó sạch sẽ. Nhưng thêm một usercript vào GreaseMonkey làm cho tất cả các file được trích xuất từ ​​thư mục của chúng.

extraction

Hơn nữa, dự án git của tôi không chỉ chứa các thư mục UserScript, có một số công cụ khác. Vì vậy, có lẽ không phải là một ý tưởng tốt để khai báo thư mục của gm_script như một nguồn cho git, đưa nhiều tệp vào gm_scripts trong khi chúng không liên quan gì đến usercript không phải là một phương pháp hay. Và nó không phải là bắt buộc phải làm việc trong một thư mục bị mất trong chiều sâu của hồ sơ Firefox của tôi.

Tôi muốn biết nếu có một kỹ thuật để làm việc hiệu quả và dễ dàng trên một dự án bao gồm cả GreaseMonkey và git.

Trả lời

4

Bạn có thể liên kết các tệp cần thiết!

Windows (Elevated Command Prompt):mklink <<gmfile>> <<gitfile>>

Unix/Linux:ln -s <<gitfile>> <<gmfile>

Cảm ơn bạn Enkidu từ nhóm thảo luận Greasespot cho câu trả lời của mình!


Sử dụng Windows và một tập tin .bat, mã này được sử dụng để liên kết tất cả các tập tin từ bạn thư mục git đến một Greasemonkey (nó có thể có sai sót nếu có khoảng trống trong các đường dẫn hoặc nếu hai tập tin của bạn có cùng tên).

echo off 

set git_dir=C:\path\to\your\git\folder 
set gm_dir=C:\path\to\your\greasemonkey\userscript\folder\ 

for /R %git_dir% %%G IN (*) do (
    echo Y | del %gm_dir%%%~nxG 
    mklink %gm_dir%%%~nxG %%G 
) 
+1

Cảm ơn rất nhiều vì điều đó. Tôi cần phải làm một cái gì đó tương tự, nhưng trên Linux. Trong thiết lập của tôi, chỉ cần liên kết toàn bộ thư mục 'gm_scripts' bằng cách sử dụng tập lệnh Bash. Bằng cách đó tôi có thể quản lý toàn bộ thư mục dưới một repo GitHub. Tìm tập lệnh trong cùng một repo tại https://github.com/bgoodr/bgoodr-userscripts/blob/master/firefox/install_gm_scripts_dir_link.sh – bgoodr

+0

Trên Windows, nó phải là một liên kết cứng (ví dụ:'mklink/H <><>'). Liên kết tượng trưng, ​​là mặc định, không đủ khi nguồn liên kết là '<>' (tức là tệp thực sự tồn tại trong thư mục git). Tôi không kiểm tra xem git có bị nhầm lẫn hay không khi liên kết là một cách khác, với mục tiêu liên kết là '<>' (tức là tệp thực sự tồn tại trong * gm_scripts * với một liên kết quay lại nó trong thư mục git), nhưng cũng có thể cần một liên kết cứng với hướng đó. Windows không làm các liên kết tượng trưng một cách minh bạch, nhưng các liên kết cứng hoạt động. Thử nghiệm trên Win10 x64. – Makyen

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