انجمن‌های فارسی اوبونتو

جامعه کاربران => پروژه‌ها => نویسنده: Stackoverflow در 10 مهر 1398، 02:01 ق‌ظ

عنوان: captain-ballard: ناظری بر پروژه های گیت سیستم شما
ارسال شده توسط: Stackoverflow در 10 مهر 1398، 02:01 ق‌ظ
مدت ها قبل بود که بر اثر تصادفی تمام اطلاعات دیسک مو از دست دادم. پروژه هایی که ماه ها روشون کار کرده بودم. ایده هایی که پرورش داده بودم.. همه و همه در کسری از ثانیه از بین رفتن.

این اتفاق ناگوار منو واداشت برنامه ای تولید کنم که پروژه های گیت مو به صورت لحظه ای مانیتور کنه و پس از مدت زمان معینی(که قابل تنظیم هست) از کل پروژهام یه status بگیره.
با این کار همیشه حواسم هست که پروژه هام در چه مرحله ای هستن و اگه لازم بود میتونم تغییرات رو کامیت/پوش کنم.
اطلاعات بیشتر:
https://github.com/LinArcX/captain-ballard
بسته آرچ:
https://aur.archlinux.org/packages/captain-ballard/
بسته void-linux:[در حال بسته بندی]
https://github.com/void-linux/void-packages/pull/14916
عنوان: پاسخ : captain-ballard: ناظری بر پروژه های گیت سیستم شما
ارسال شده توسط: nino در 10 مهر 1398، 08:06 ق‌ظ
یعنی به صورت دوره ای از دایرکتوری های گیت بک آپ می گیره یا فقط status رو نشون میده؟
عنوان: پاسخ : captain-ballard: ناظری بر پروژه های گیت سیستم شما
ارسال شده توسط: Stackoverflow در 10 مهر 1398، 09:40 ق‌ظ
فقط وضعیت رو نشون میده.
عنوان: پاسخ : captain-ballard: ناظری بر پروژه های گیت سیستم شما
ارسال شده توسط: nino در 10 مهر 1398، 10:31 ق‌ظ
خوب از اون جایی که بیشتر وقت رو توی ترمینال سر می کنیم من prompt رو در bashrc تغییرات کوچیکی دادم تا بدون نیاز به نصب zsh و powerline بشه همیشه از وضعیت گیت باخبر باشم:
PS1='[\u@\h \W]\$ \[\033[38;5;34m\]$(if_git)\[\033[0m\] '                                                                                   
                                                                                                                                           
if_git(){                                                                                                                                   
  if [[ -d "./.git" ]]; then                                                                                                               
    logo=""                                                                                                                               
    cur_branch="$(git branch -a 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/   \1/')"                                                 
                                                                                                                                           
    if [[ "$cur_branch" == "   master" ]]; then                                                                                           
      cur_branch=""                                                                                                                         
    fi                                                                                                                                     
                                                                                                                                           
    if [[ "$(git status -s)" ]]; then                                                                                                       
      if [[ "$(\git status | \grep -i 'is ahead of')" ]]; then                                                                             
        commits_ahead=" $(\git status | \grep -i 'is ahead of' | awk '{ print $(NF - 1) }')"                                               
      else                                                                                                                                 
        commits_ahead=" "                                                                                                                 
      fi                                                                                                                                   
      if [[ "$(git status -s | \grep '^ M\|^ D' | wc -l)"  -gt "0" ]]; then                                                                 
        unstaged=" $(git status -s | \grep '^ M\|^ D' | wc -l)"                                                                           
      else                                                                                                                                 
        unstaged=" "                                                                                                                       
      fi                                                                                                                                   
      if [[ "$(git status -s | \grep '^M\|^A\|^D\|^R' | wc -l)" -gt "0" ]]; then                                                           
        staged=" $(git status -s | \grep '^M\|^A\|^D\|^R' | wc -l)"                                                                       
      else                                                                                                                                 
        staged=" "                                                                                                                         
      fi
      if [[ "$(git status -s | \grep '??' | wc -l)" -gt "0" ]]; then                                                                       
        untracked=" $(git status -s | \grep '??' | wc -l)"                                                                                 
      else                                                                                                                                 
        untracked=" "                                                                                                                     
      fi                                                                                                                                   
      echo " ${logo}${cur_branch}  $unstaged  $staged  $untracked  $commits_ahead "                                                         
    else                                                                                                                                   
      if [[ "$(\git status | \grep -i 'is ahead of')" ]]; then                                                                             
        commits_ahead=" $(\git status | \grep -i 'is ahead of' | awk '{ print $(NF - 1) }') "                                             
        echo " ${logo}${cur_branch}  $commits_ahead"                                                                                       
      else                                                                                                                                 
        echo " ${logo}${cur_branch}  "                                                                                                     
      fi                                                                                                                                   
    fi                                                                                                                                     
  fi ; return ;}
عنوان: پاسخ : captain-ballard: ناظری بر پروژه های گیت سیستم شما
ارسال شده توسط: Stackoverflow در 10 مهر 1398، 10:45 ق‌ظ
این هم راه حلی هست. منتهی captain-ballard قادره چندین پروژه رو مانیتور کنه. و تو زمان های مشخصی به شما آخرین وضعیت شونو نشون بده.

ویرایش: البته من یه هدف جانبی هم داشتم. آشنایی بیشتر با زبان سی و همین طور توسعه بوسیله gtk. و در این بین کلی چیزهای جدید یاد گرفتم که به نظرم ارزش شو داشت این پروژه رو توسعه بدم.
برای نیاز شخصی م بسیار عالی هست. و البته ممکنه خیلی ها روش های دیگه ای رو ابداع کنن که منطقی هم هست.