Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

<GIT>

Đang mở
#49 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức phù hợp với người mới
20/100
Loại issue
Tài liệu
Độ rõ ràng
Cần làm rõ
Mức độ hoạt động
Đình trệ
Công nghệ
git
Lĩnh vực
tooling

Hướng nghiên cứu

Không có tệp, bài kiểm thử, điểm vào hay thay đổi cụ thể nào trong repository được nêu tên. Phần nội dung là một bài viết về git-linearize, githashcrash và lucky-commit; trước tiên hãy xác nhận liệu có dự định thay đổi repository hay không rồi mới tiếp tục, vì các tiêu chí hoàn thành chưa được nêu rõ.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

تاریخچه گیت بسیار خطی

یکی از کارهایی که دوست دارم در پروژه هایم انجام دهم این است که تاریخچه git را تا حد امکان خطی کنم.

معمولاً به این معنی است که تعهدات را به شاخه اصلی تغییر دهید، اما همچنین می تواند به معنای اجازه دادن به ادغام در یک جهت باشد، از شاخه های ویژگی به اصلی، نه برعکس. بستگی به پروژه داره

امروز من این را یک قدم جلوتر می‌برم و یک مفهوم جدید را معرفی می‌کنم: تاریخچه git بسیار خطی .

با تاریخچه بسیار خطی ما، اولین commit در یک هش repo یک هش است که با شروع می شود 0000000، commit دوم است 0000001، سومی است 0000002، و غیره!

اعداد نسخه افزایشی صحبت در مورد ویرایش ها را آسان می کند. بلافاصله می‌دانید که نسخه 230 بعد از 200 می‌آید، و اگر روزانه 10 نسخه جدید ایجاد کنید، به راحتی می‌توانید شهودی داشته باشید که یک commit بر اساس آخرین نسخه فعلی شما چقدر قدیمی است.

تاریخچه گیت بسیار خطی ( در GitHub )

پس زمینه

در git، commit ها با SHA‑1مجموع خود شی commit ارجاع داده می شوند. ما می‌توانیم یک شی کامیت خام را با استفاده git cat-fileاز هش بودن آن با خواندن آن از دیسک (فشرده شده با zlib) و آزمایش چک‌سام بررسی کنیم. جمع کنترلی حاصل باید همیشه با نام فایل یکسان باشد.

$ git cat-commit d9ef231178b5004c17fe4e4e1807728567a69b84 درخت 2ccda48edc8ed3a96ac7576c57a5d645de2396f6 والد ad877a8e0240bdec6757781fdc3f2b45b8ced7a2 نویسنده گوستاو وستلینگ [email protected] 1669040942 +0100 committer گوستاو وستلینگ [email protected] 1669040995 +0100 وبلاگ: شروع به کار بر روی یک پست وبلاگ برای تاریخچه git بسیار خطی کنید $ pigz -d < .git/objects/d9/ef231178b5004c17fe4e4e1807728567a69b84 | sha1sum d9ef231178b5004c17fe4e4e1807728567a69b84 -

پیام commit آخرین بار در شی است و به راحتی قابل تغییر است. برای تغییر چک جمع شی، می توانیم داده های ناخواسته را به پیام commit اضافه کنیم. ما فقط نمی دانیم محموله ناخواسته چیست.

خرد کردن اعداد

هیچ راهی برای ایجاد آسان محتوا با پیشوند مورد نظر وجود ندارد (که از کل چک‌سام‌ها جلوگیری می‌کند). بنابراین ما فقط یک گزینه داریم: آزمایش بسیاری از ترکیبات داده های ناخواسته تا زمانی که بتوانیم یکی را پیدا کنیم که معیارهای ما را برآورده کند. این اساساً همان مکانیزمی است که بیت کوین و سایر سیستم های اثبات کار را تقویت می کند. در این مورد حدس می‌زنم می‌توان آن را "اثبات کار، برای کار شما" نامید. یا «اثبات اثبات کار»؟ هه

من کرانچ کردن پیام commit را با استفاده از githashcrash توسط Mattias Appelgren انجام داده ام.

در مک بوکم می توانم 15 میلیون هش در ثانیه تولید و آزمایش کنم. از آنجایی که ما به دنبال ورودی هستیم که یک پیشوند 8 کاراکتری از پیش تعریف شده ایجاد کند، باید در هر 16^8 => 4 294 967 296تکرار، تقریباً هر 5 دقیقه یک بار، یک ضربه دریافت کنم! می‌توانید با استفاده از پیشوندهای کوتاه‌تر، این فرآیند را سریع‌تر انجام دهید، یک پیشوند 6 کاراکتری فقط 1 ثانیه طول می‌کشد تا تولید شود (اما در برخی از رابط‌های کاربری Git به خوبی به نظر نمی‌رسد، و از آنجایی که این پروژه‌ای است که فرم را بر عملکرد اولویت می‌دهد، من مایل به هدر دادن چرخه های CPU بیشتری هستند).

برای مثال commit بالا، می‌توانیم از githashcrash برای یافتن داده‌های ناخواسته استفاده کنیم که پیشوند commit را به هر چیزی که می‌خواهیم تغییر می‌دهد، مانند 00000000. پس از کمی کرانچ، githashcrash متوجه می‌شود که می‌توانیم magic: MTQIpN2AmwQAبه پیام commit خود اضافه کنیم تا هش مورد نظر خود را ایجاد کنیم! آآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآگاه

2022/11/21 15:56:04 زمان: 12m19.962437166s 2022/11/21 15:56:04 تست شده: 1.0845869819e+10 2022/11/21 15:56:04 14.66 MH/s 2022/11/21 15:56:04 یافت شد: 00000000 508749e5231fa5b43efcf7ac31385058 $ git cat-commit 00000000 508749e5231fa5b43efcf7ac31385058 درخت 2ccda48edc8ed3a96ac7576c57a5d645de2396f6 والد ad877a8e0240bdec6757781fdc3f2b45b8ced7a2 نویسنده گوستاو وستلینگ [email protected] 1669040942 +0100 committer گوستاو وستلینگ [email protected] 1669041794 +0100 وبلاگ: شروع به کار بر روی یک پست وبلاگ برای تاریخچه git بسیار خطی کنید جادو: MTQIpN2AmwQA

اتوماسیون

با مقداری bash-glue می‌توانیم این فرآیند را خودکار کنیم و شاخه‌های شما را در یک دستور به‌شدت خطی کنیم. برای آزمایش آن (لطفاً این کار را نکنید)، با نصب brew install zegl/tap/git-linearizeو در هر مخزن آن را اجرا کنید git linearizeتا آن را "رفع" کنید!

من یک پروژه اسباب‌بازی اخیرم را برای استفاده از این فرمت پیشوندها تبدیل کرده‌ام، و صادقانه بگویم، واقعاً تمیز به نظر می‌رسد!

ضمیمه: پیشوندهای leet haxor

• پیشوند همه تعهدات با "C0DE" -git linearize --format "c0de"

• برخورد کامل (کل هش صفر است، سپس 000...1، و غیره) - ( هر commit git linearize --format "%040d"10 33 سال طول می کشد)

به روز رسانی: هش نامرئی مبتنی بر GPU خراب می شود

git-linearize اکنون از lucky-commit به عنوان باطن تولید هش استفاده می کند. از GPU شما برای تولید هش استفاده می کند و حدود 20 برابر سریعتر از پیاده سازی مبتنی بر CPU است. وای! lucky-commitهمچنین به طور هوشمندانه ای فقط از کاراکترهای فضای سفید نامرئی برای قرار دادن پیام های commit استفاده می کند.

با تشکر از kinduff on Hacker News که به من در مورد لاکی کامیت گفت.

Ngôn ngữ chính
JavaScript
Star
142
Fork
64
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Chuẩn bị môi trường

Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của ionic-team/rollup-plugin-node-polyfills

Tất cả issue của ionic-team/rollup-plugin-node-polyfills

Issue tương tự

Thêm issue về JavaScript

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.