<GIT>
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
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- 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.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của ionic-team/rollup-plugin-node-polyfills
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 35/100
ionic-team/rollup-plugin-node-polyfills#62 · 2 bình luận · 6 reaction ·
-
Feature Request: http2 polyfillĐang mở
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
ionic-team/rollup-plugin-node-polyfills#56 · 11 reaction ·
-
Type Error ImporterĐang mở
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 35/100
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 25/100
-
node:pathĐang mở
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 20/100
ionic-team/rollup-plugin-node-polyfills#51 · 2 reaction ·
Tất cả issue của ionic-team/rollup-plugin-node-polyfills
Issue tương tự
-
documentation v2
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
modelcontextprotocol/servers#5170 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
SwiftKickMobile/skai#84 ·
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
Billionmail/BillionMail#389 ·
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 92/100
Uniswap/tokenlists-org#3331 ·
-
beginner-friendly category:finding-titles community enhancement first-timers-only good first issue hacktoberfest help wanted low hanging fruit micro-contribution type: task up-for-grabs
Độ khó 1/5 1-3 giờ Mức phù hợp với người mới 85/100
Berserk-hub150/skillhawk#227 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 8 ngày