Shell Script برای دریافت تعداد commit ها در تمام مخازن موجود در یک فهرست

Summarize this content to 400 words in Persian Lang
من در حال حاضر به عنوان دانش آموز برای دوره فناوری اینترنت کاربردی در دانشگاه نیویورک کار می کنم که توسط پروفسور شگفت انگیز جوزف ورسوزا تدریس می شود.مسئولیت های من شامل درجه بندی پروژه ها و تکالیف دانش آموزی و سایر وظایف نیز می باشد.
یکی از خسته کننده ترین کارهایی که من به عنوان یک دانش آموز با آن روبرو هستم، بررسی تعداد تعهدات انجام شده برای یک تکلیف خاص است. در حالی که دریافت این اطلاعات با استفاده از یک فرمان ساده است، اما اجرای آن برای هر دانش آموز به صورت جداگانه بسیار وقت گیر و انصافاً خسته کننده می شد.
از آنجایی که من قبلاً با اسکریپت های Bash در لینوکس آزمایش می کردم، به فکر ایجاد راه حلی مشابه برای ویندوز افتادم. به عنوان یک کاربر ویندوز، من متوجه شدم که این باید امکان پذیر باشد – و معلوم شد که اینطور است!
این کار اساساً شامل نوشتن کدی برای خودکارسازی این موارد است:
همه زیر پوشه ها را در یک فهرست بازیابی کنید.در هر پوشه حرکت کنید.دستورات Git مورد نیاز را در هر پوشه به طور خودکار اجرا کنید.بنابراین در اینجا مراحلی که برای انجام این کار انجام داده بودم، و مراحل اجرای کد نیز در زیر آورده شده است.
اول از همه با مرور مستندات اینجا شروع کنیدمستندات — https://learn.microsoft.com/en-us/powershell/
من به صورت آنلاین مقالات و منابع را نیز جستجو کردم، منابع مربوطه را در زیر قرار داده ام.
در اینجا کد نهایی است. این یک حلقه برای ساده است که از هر پوشه یکی یکی عبور می کند. اول از همه بررسی می کند که آیا آن repo یک مخزن git است یا نه، سپس پس از تأیید، کد را برای یافتن کل commit ها و 4 commit آخر می دهد.
# This is needed to get all the subfolders in the current directory
Get-ChildItem -Directory | ForEach-Object {
$folderPath = $_.FullName
# First of all we need to check if it is even a git repo or not
if (Test-Path “$folderPath\.git”) {
Write-Output “Folder: $($_.Name)”
# This is the code to get the total number of commits
$totalCommits = git -C $folderPath rev-list –all –count
Write-Output “Total Commits: $totalCommits”
# Here we get the last 4 commits with hash and detailed date (date and time)
Write-Output “Last 4 commits are:”
git -C $folderPath log -n 4 –pretty=format:” Commit %h – %ad” –date=iso
Write-Output “” # For readabillity
}
}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
سپس این اسکریپت را در همان فهرست والد لیستcommit.ps1 ذخیره می کنیم
آن را به صورت .\Listcommit.ps1 اجرا کنید
و همین است. شما خروجی خود را روی صفحه نمایش خود دارید.
مراجع:
برای دریافت پوشه های فرزند: https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.management/get-childitem?view=powershell-7.4
برای اجرای حلقه for:https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/foreach-object?view=powershell-7.4
برای خروجی: https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/write-output?view=powershell-7.4
دریافت اقلام کودک: https://adamtheautomator.com/get-childitem/
اتوماسیون وظایف Powershell: https://www.ninjaone.com/blog/how-to-automate-tasks-with-powershell/
من در حال حاضر به عنوان دانش آموز برای دوره فناوری اینترنت کاربردی در دانشگاه نیویورک کار می کنم که توسط پروفسور شگفت انگیز جوزف ورسوزا تدریس می شود.
مسئولیت های من شامل درجه بندی پروژه ها و تکالیف دانش آموزی و سایر وظایف نیز می باشد.
یکی از خسته کننده ترین کارهایی که من به عنوان یک دانش آموز با آن روبرو هستم، بررسی تعداد تعهدات انجام شده برای یک تکلیف خاص است. در حالی که دریافت این اطلاعات با استفاده از یک فرمان ساده است، اما اجرای آن برای هر دانش آموز به صورت جداگانه بسیار وقت گیر و انصافاً خسته کننده می شد.
از آنجایی که من قبلاً با اسکریپت های Bash در لینوکس آزمایش می کردم، به فکر ایجاد راه حلی مشابه برای ویندوز افتادم. به عنوان یک کاربر ویندوز، من متوجه شدم که این باید امکان پذیر باشد – و معلوم شد که اینطور است!
این کار اساساً شامل نوشتن کدی برای خودکارسازی این موارد است:
همه زیر پوشه ها را در یک فهرست بازیابی کنید.
در هر پوشه حرکت کنید.
دستورات Git مورد نیاز را در هر پوشه به طور خودکار اجرا کنید.
بنابراین در اینجا مراحلی که برای انجام این کار انجام داده بودم، و مراحل اجرای کد نیز در زیر آورده شده است.
اول از همه با مرور مستندات اینجا شروع کنید
مستندات — https://learn.microsoft.com/en-us/powershell/
من به صورت آنلاین مقالات و منابع را نیز جستجو کردم، منابع مربوطه را در زیر قرار داده ام.
- در اینجا کد نهایی است. این یک حلقه برای ساده است که از هر پوشه یکی یکی عبور می کند. اول از همه بررسی می کند که آیا آن repo یک مخزن git است یا نه، سپس پس از تأیید، کد را برای یافتن کل commit ها و 4 commit آخر می دهد.
# This is needed to get all the subfolders in the current directory
Get-ChildItem -Directory | ForEach-Object {
$folderPath = $_.FullName
# First of all we need to check if it is even a git repo or not
if (Test-Path "$folderPath\.git") {
Write-Output "Folder: $($_.Name)"
# This is the code to get the total number of commits
$totalCommits = git -C $folderPath rev-list --all --count
Write-Output "Total Commits: $totalCommits"
# Here we get the last 4 commits with hash and detailed date (date and time)
Write-Output "Last 4 commits are:"
git -C $folderPath log -n 4 --pretty=format:" Commit %h - %ad" --date=iso
Write-Output "" # For readabillity
}
}
-
سپس این اسکریپت را در همان فهرست والد لیستcommit.ps1 ذخیره می کنیم
-
آن را به صورت .\Listcommit.ps1 اجرا کنید
و همین است. شما خروجی خود را روی صفحه نمایش خود دارید.
مراجع:
برای دریافت پوشه های فرزند: https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.management/get-childitem?view=powershell-7.4
برای اجرای حلقه for:https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/foreach-object?view=powershell-7.4
برای خروجی: https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/write-output?view=powershell-7.4
دریافت اقلام کودک: https://adamtheautomator.com/get-childitem/
اتوماسیون وظایف Powershell: https://www.ninjaone.com/blog/how-to-automate-tasks-with-powershell/