GIT ဆာဗာသို့ အသုံးပြုသူအများအပြား ဝင်ရောက်နိုင်သော အဖွဲ့အစည်း

Git ဆာဗာကို ထည့်သွင်းပြီး ပြင်ဆင်သတ်မှတ်သည့်အခါ၊ ပရောဂျက်များစွာအတွက် အသုံးပြုသူအများအပြားအတွက် အသုံးပြုခွင့်ကို စုစည်းခြင်းနှင့်ပတ်သက်၍ မေးခွန်းပေါ်လာသည်။ ပြဿနာကို သုတေသနပြုပြီး ကျွန်ုပ်၏လိုအပ်ချက်အားလုံးနှင့် ကိုက်ညီသည့် အဖြေကို ရှာတွေ့ခဲ့သည်- ရိုးရှင်း၊ ဘေးကင်းသည်၊ ယုံကြည်စိတ်ချရသည်။

ကျွန်ုပ်၏ဆန္ဒများမှာ-

  • အသုံးပြုသူတိုင်းသည် ၎င်းတို့၏ကိုယ်ပိုင်အကောင့်နှင့် ချိတ်ဆက်သည်။
  • အသုံးပြုသူအများအပြားသည် ပရောဂျက်တစ်ခုတွင် လုပ်ဆောင်နိုင်သည်။
  • တူညီသောအသုံးပြုသူသည် ပရောဂျက်များစွာတွင် အလုပ်လုပ်နိုင်သည်။
  • အသုံးပြုသူတိုင်းသည် သူလုပ်ဆောင်နေသည့် ပရောဂျက်များကိုသာ ဝင်ရောက်ခွင့်ရှိသည်။
  • ၎င်းသည် command line မှတဆင့်ချိတ်ဆက်နိုင်ပြီး web interface တစ်မျိုးမျိုးဖြင့်သာချိတ်ဆက်ရန်ဖြစ်သင့်သည်။

ဒါလည်း ကောင်းလိမ့်မယ်-

  • လူများကို ထိန်းချုပ်ရန် ဖတ်ရှုရန်သာ ခွင့်ပြုချက်များ ပေးသည်။
  • Git တွင် အသုံးပြုသူ ဝင်ရောက်ခွင့် အခွင့်အရေးများကို အဆင်ပြေစွာ စီမံခန့်ခွဲပါ။

GIT ဆာဗာသို့ဝင်ရောက်ခြင်းအတွက် ဖြစ်နိုင်ခြေရှိသော ရွေးချယ်မှုများ၏ ခြုံငုံသုံးသပ်ချက်

ပထမဦးစွာ၊ သင်သည် မည်သည့်အရာကို ရွေးချယ်ရမည်ကို သိရန်လိုအပ်သည်၊ ထို့ကြောင့် ဤနေရာတွင် Git ပရိုတိုကောများ၏ အမြန်ခြုံငုံသုံးသပ်ချက်ဖြစ်သည်။

  • ssh - ဆာဗာသို့ဝင်ရောက်ရန် အထူးဖန်တီးထားသော အသုံးပြုသူအကောင့်ကို အသုံးပြုသည်။
    • Git သည် repositories အားလုံးကိုဝင်ရောက်ရန် အကောင့်တစ်ခုအသုံးပြုခြင်းကို ၎င်း၏အကြံပြုချက်များမှဖယ်ထုတ်ထားခြင်းမှာ ထူးဆန်းပါသည်။ ၎င်းသည် ကျွန်ုပ်၏ လိုအပ်ချက်များနှင့် လုံးဝမကိုက်ညီပါ။
    • သင်သည် အကောင့်များစွာကို သုံးနိုင်သော်လည်း အချို့သော လမ်းညွှန်များသာ အသုံးပြုခွင့်ကို မည်သို့ကန့်သတ်နိုင်မည်နည်း။
      • အခြားအသုံးပြုသူများအတွက် ထိုနေရာတွင် စာရေးခွင့်ကို စုစည်းရန်ခက်ခဲသောကြောင့် ပင်မလမ်းညွှန်သို့ ပိတ်ခြင်းသည် မသင့်လျော်ပါ။
      • Git သည် ၎င်းတို့ကို လင့်များအဖြစ် အဓိပ္ပါယ်မဖော်သောကြောင့် သင့်အိမ်လမ်းညွှန်မှ symlinks များကို အသုံးပြုခြင်းသည်လည်း ခက်ခဲပါသည်။
      • စကားပြန်သို့ ဝင်ရောက်ခွင့်ကို ကန့်သတ်ရန် ဖြစ်နိုင်သော်လည်း ၎င်းသည် အမြဲတမ်း အလုပ်ဖြစ်မည်ဟု အပြည့်အဝ အာမခံချက် မရှိပါ။
        • ယေဘူယျအားဖြင့် သင်သည် ထိုကဲ့သို့သော အသုံးပြုသူများအတွက် သင့်ကိုယ်ပိုင် command စကားပြန်ကို ချိတ်ဆက်နိုင်သော်လည်း၊
          • ပထမတော့ ဒါက ခက်ခဲတဲ့ ဆုံးဖြတ်ချက်မျိုး ဖြစ်နေပြီ၊
          • ဒုတိယအနေနဲ့ ဒါကို ရှောင်လွှဲနိုင်ပါတယ်။

    သို့သော် အသုံးပြုသူသည် မည်သည့် command များကိုမဆို လုပ်ဆောင်နိုင်တော့မည်မှာ ပြဿနာမဟုတ်ပေ။ ယေဘူယျအားဖြင့်၊ ၎င်းနည်းလမ်းကို သင်မည်ကဲ့သို့ အသုံးပြုရမည်ကို အတိအကျ သိရှိပါက ဤနည်းလမ်းကို ဖယ်ထုတ်၍မရပါ။ ကျွန်ုပ်တို့သည် ဤနည်းလမ်းကို နောက်ပိုင်းတွင် ပြန်သွားပါမည်၊ သို့သော် ယခုတွင် ကျွန်ုပ်တို့သည် အခြားအခြားရွေးချယ်စရာများကို အကျဉ်းချုံးစဉ်းစားပါမည်၊ ပိုရိုးရှင်းသည့်အရာ ရှိကောင်းရှိနိုင်ပါမည်။

  • git local protocol သည် sshfs နှင့် ပေါင်းစပ်အသုံးပြုနိုင်သည်၊ အသုံးပြုသူအများအပြားကိုအသုံးပြုနိုင်သည်၊ သို့သော် အဓိကအားဖြင့် ယခင်ကိစ္စနှင့်အတူတူပင်ဖြစ်သည်
  • http - ဖတ်ရန်သာ
  • git သည် read-only ဖြစ်သည်။
  • https - ထည့်သွင်းရန် ခက်ခဲသည်၊ အသုံးပြုသူဝင်ရောက်ခွင့်ကို စုစည်းရန် အပိုဆော့ဖ်ဝဲ၊ ထိန်းချုပ် panel တစ်မျိုးမျိုး လိုအပ်သည်... ၎င်းသည် ဖြစ်နိုင်သည်ဟု ထင်ရသော်လည်း အရာအားလုံးသည် တစ်နည်းနည်းဖြင့် ရှုပ်ထွေးနေပါသည်။

Git ဆာဗာသို့ အသုံးပြုသူအများအပြားဝင်ရောက်ခွင့်ကို စုစည်းရန် ssh ပရိုတိုကောကို အသုံးပြုခြင်း။

ssh ပရိုတိုကောသို့ ပြန်သွားကြပါစို့။

git အတွက် ssh access ကို သင်သုံးသောကြောင့်၊ server data ၏ လုံခြုံရေးကို သေချာရန် လိုအပ်ပါသည်။ ssh မှတဆင့်ချိတ်ဆက်သောအသုံးပြုသူသည် Linux ဆာဗာတွင် ၎င်းတို့၏ကိုယ်ပိုင် login ကိုအသုံးပြုသည်၊ ထို့ကြောင့် ၎င်းတို့သည် ssh client မှတဆင့်ချိတ်ဆက်ကာ server ၏ command line ကိုဝင်ရောက်နိုင်သည်။
ယင်းသို့ဝင်ရောက်ခြင်းမှ အပြည့်အဝအကာအကွယ်မရှိပါ။

သို့သော် အသုံးပြုသူသည် Linux ဖိုင်များကို စိတ်မ၀င်စားသင့်ပါ။ သိသာထင်ရှားသောအချက်အလက်များကို git repository တွင်သာသိမ်းဆည်းထားသည်။ ထို့ကြောင့်၊ ၎င်းတွင်ပါဝင်သည့်ပရောဂျက်များကိုကြည့်ရှုခြင်းမှအပ၊ အသုံးပြုသူအားကြည့်ရှုခြင်းမပြုရန်တားမြစ်ရန် command line မှတဆင့်ဝင်ရောက်ခွင့်ကိုကန့်သတ်ရန်မဖြစ်နိုင်ပါ။
သိသာထင်ရှားသောရွေးချယ်မှုသည် Linux ခွင့်ပြုချက်စနစ်ကိုအသုံးပြုရန်ဖြစ်သည်။

ဖော်ပြထားပြီးဖြစ်သည့်အတိုင်း၊ ssh ဝင်ရောက်ရန်အတွက် အကောင့်တစ်ခုသာ အသုံးပြုနိုင်သည်။ ဤဖွဲ့စည်းပုံသည် အကြံပြုထားသော git ရွေးစရာများစာရင်းတွင် ပါဝင်သော်လည်း အသုံးပြုသူအများအပြားအတွက် အန္တရာယ်မကင်းပါ။

ဆောင်းပါးအစတွင် ပေးထားသည့် လိုအပ်ချက်များကို အကောင်အထည်ဖော်ရန်၊ ရပိုင်ခွင့်များနှင့် ပိုင်ရှင်များ၏ တာဝန်ဖြင့် အောက်ပါ လမ်းညွှန်ဖွဲ့စည်းပုံကို ဖန်တီးသည်-

1) ပရောဂျက်လမ်းညွှန်များ

dir1(proj1:proj1,0770)
dir2(proj2:proj2,0770)
dir3(proj3:proj3,0770)
...
ဘယ်မှာ
dir1၊ dir2၊ dir3 - ပရောဂျက်လမ်းညွှန်များ- ပရောဂျက် ၁၊ ပရောဂျက် ၂၊ ပရောဂျက် ၃။

proj1:proj1၊ proj2:proj2၊ proj3:proj3 တို့သည် သက်ဆိုင်ရာ ပရောဂျက်လမ်းညွှန်များ၏ ပိုင်ရှင်များအဖြစ် တာဝန်ပေးအပ်ခြင်းခံရသော အထူးဖန်တီးထားသော Linux အသုံးပြုသူများဖြစ်သည်။

လမ်းညွှန်အားလုံးအတွက် ခွင့်ပြုချက်များကို 0770 ဟု သတ်မှတ်ထားသည် - ပိုင်ရှင်နှင့် သူ၏အဖွဲ့အတွက် အပြည့်အဝဝင်ရောက်ခွင့်နှင့် အခြားလူတိုင်းအတွက် ပြီးပြည့်စုံသော တားမြစ်ချက်။

2) developer အကောင့်များ

Разработчик 1: dev1:dev1,proj1,proj2
Разработчик 2: dev2:dev2,proj2,proj3

အဓိကအချက်မှာ သက်ဆိုင်ရာပရောဂျက်၏ စနစ်အသုံးပြုသူ၏ နောက်ထပ်အဖွဲ့တစ်ဖွဲ့ကို ဆော့ဖ်ဝဲအင်ဂျင်နီယာများအား တာဝန်ပေးအပ်ခြင်းဖြစ်ပါသည်။ ၎င်းကို Linux server administrator မှ command တစ်ခုတည်းဖြင့် လုပ်ဆောင်သည်။

ဤဥပမာတွင်၊ "Developer 1" သည် ပရောဂျက် proj1 နှင့် proj2 တွင် လုပ်ဆောင်နေပြီး "Developer 2" သည် ပရောဂျက် proj2 နှင့် proj3 တွင် လုပ်ဆောင်နေပါသည်။

ဆော့ဖ်ဝဲရေးသားသူ မည်သူမဆို command line မှတစ်ဆင့် ssh မှတစ်ဆင့် ချိတ်ဆက်ပါက၊ ၎င်းတို့မပါဝင်သည့် ပရောဂျက်လမ်းညွှန်များ၏ အကြောင်းအရာများကို ကြည့်ရှုရန်ပင် ၎င်းတို့၏အခွင့်အရေးများ လုံလောက်မည်မဟုတ်ပါ။ ဒါကို သူကိုယ်တိုင် မပြောင်းလဲနိုင်ပါဘူး။

ဤနိယာမ၏အခြေခံသည် Linux အခွင့်အရေးများ၏ အခြေခံလုံခြုံရေးဖြစ်သောကြောင့်၊ ဤအစီအစဉ်သည် ယုံကြည်စိတ်ချရသည်။ ထို့အပြင်၊ အဆိုပါအစီအစဉ်ကိုစီမံခန့်ခွဲရန်အလွန်လွယ်ကူသည်။

ဆက်လေ့ကျင့်ကြရအောင်။

Linux ဆာဗာပေါ်တွင် Git repositories ဖန်တီးခြင်း။

ကျနော်တို့ စစ်ဆေးတယ်။

[root@server ~]# cd /var/
[root@server var]# useradd gitowner
[root@server var]# mkdir gitservertest
[root@server var]# chown gitowner:gitowner gitservertest
[root@server var]# adduser proj1
[root@server var]# adduser proj2
[root@server var]# adduser proj3
[root@server var]# adduser dev1
[root@server var]# adduser dev2
[root@server var]# passwd dev1
[root@server var]# passwd dev2

လက်နဲ့ စာရိုက်ရတာ ပျင်းတယ်...

[root@server gitservertest]# sed "s/ /n/g" <<< "proj1 proj2 proj3" | while read u; do mkdir $u; chown $u:$u $u; chmod 0770 $u; done

[root@server gitservertest]# usermod -aG proj1 dev1
[root@server gitservertest]# usermod -aG proj2 dev1
[root@server gitservertest]# usermod -aG proj2 dev2
[root@server gitservertest]# usermod -aG proj3 dev2

command line မှ အခြားသူများ၏ repositories များကို ဝင်ရောက်ကြည့်ရှုနိုင်ပြီး ၎င်းတို့၏ အကြောင်းအရာများကိုပင် ကြည့်ရှုရန် မဖြစ်နိုင်ကြောင်း ကျွန်ုပ်တို့ ယုံကြည်ပါသည်။

[dev1@server ~]$ cd /var/gitservertest/proj3
-bash: cd: /var/gitservertest/proj3: Permission denied
[dev1@server ~]$ ls /var/gitservertest/proj3
ls: cannot open directory /var/gitservertest/proj3: Permission denied

Git ရှိ တူညီသောပရောဂျက်တွင် developer အများအပြားနှင့် ပူးပေါင်းပါ။

ဆော့ဖ်ဝဲအင်ဂျင်နီယာတစ်ဦးသည် ဖိုင်အသစ်တစ်ခုကို မိတ်ဆက်ပေးပါက၊ သူကိုယ်တိုင်သည် ၎င်း၏ပိုင်ရှင်ဖြစ်သည် (ဥပမာ၊ dev1) မဟုတ်ဘဲ ပရောဂျက်၏အသုံးပြုသူပိုင်ရှင်မဟုတ်သောကြောင့် အခြားဆော့ဖ်ဝဲအင်ဂျင်နီယာများက ၎င်းကို မပြောင်းလဲနိုင်ပေ။ ကျွန်ုပ်တို့တွင် server-side repository တစ်ခုရှိသောကြောင့်၊ ပထမဦးစွာ၊ ကျွန်ုပ်တို့သည် “.git” directory ကို မည်သို့ဖွဲ့စည်းပုံနှင့် ဖိုင်အသစ်များကို ဖန်တီးထားခြင်းရှိမရှိ သိရန်လိုအပ်ပါသည်။

ဒေသတွင်း Git repository ကိုဖန်တီးပြီး Git ဆာဗာသို့ တွန်းပို့ခြင်း။

Client စက်သို့ ဆက်သွားကြပါစို့။

Microsoft Windows [Version 6.1.7601]
(c) Корпорация Майкрософт (Microsoft Corp.), 2009. Все права защищены.

C:gittest>git init .
Initialized empty Git repository in C:/gittest/.git/

C:gittest>echo "test dev1 to proj2" > test1.txt

C:gittest>git add .

C:gittest>git status
On branch master
No commits yet
Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   test1.txt

C:gittest>git commit -am "new test file added"
[master (root-commit) a7ac614] new test file added
 1 file changed, 1 insertion(+)
 create mode 100644 test1.txt
 
C:gittest>git remote add origin "ssh://[email protected]/var/gitservertest/proj2"

C:gittest>git push origin master
dev1:[email protected]'s password:
Counting objects: 3, done.
Writing objects: 100% (3/3), 243 bytes | 243.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To ssh://10.1.1.11/var/gitservertest/proj2
 * [new branch]      master -> master

C:gittest>

တစ်ချိန်တည်းမှာပင်၊ ဖိုင်အသစ်များကို ဆာဗာပေါ်တွင် ဖန်တီးထားပြီး ၎င်းတို့ကို တွန်းအားပေးလုပ်ဆောင်သော အသုံးပြုသူနှင့် သက်ဆိုင်ပါသည်။

[dev1@server proj2]$ tree
.
├── 1.txt
├── branches
├── config
├── description
├── HEAD
├── hooks
│   ├── applypatch-msg.sample
│   ├── commit-msg.sample
│   ├── post-update.sample
│   ├── pre-applypatch.sample
│   ├── pre-commit.sample
│   ├── prepare-commit-msg.sample
│   ├── pre-push.sample
│   ├── pre-rebase.sample
│   └── update.sample
├── info
│   └── exclude
├── objects
│   ├── 75
│   │   └── dcd269e04852ce2f683b9eb41ecd6030c8c841
│   ├── a7
│   │   └── ac6148611e69b9a074f59a80f356e1e0c8be67
│   ├── f0
│   │   └── 82ea1186a491cd063925d0c2c4f1c056e32ac3
│   ├── info
│   └── pack
└── refs
    ├── heads
    │   └── master
    └── tags

12 directories, 18 files
[dev1@server proj2]$ ls -l objects/75/dcd269e04852ce2f683b9eb41ecd6030c8c841
-r--r--r--. 1 dev1 dev1 54 Jun 20 14:34 objects/75/dcd269e04852ce2f683b9eb41ecd6030c8c841
[dev1@server proj2]$

သင်သည် ပြောင်းလဲမှုများကို Git ဆာဗာသို့ အပ်လုဒ်လုပ်သောအခါ၊ အပိုဖိုင်များနှင့် လမ်းညွှန်များကို ဖန်တီးပေးမည်ဖြစ်ပြီး ၎င်းတို့၏ပိုင်ရှင်မှာ အမှန်တကယ် အပ်လုဒ်ပြုလုပ်သည့် အသုံးပြုသူဖြစ်သည်။ သို့သော် ထိုဖိုင်များနှင့် လမ်းညွှန်များအုပ်စုသည် ဤအသုံးပြုသူ၏ အဓိကအုပ်စုနှင့် သက်ဆိုင်သည်၊ ဆိုလိုသည်မှာ dev1 အသုံးပြုသူအတွက် dev1 အုပ်စုနှင့် dev2 အသုံးပြုသူအတွက် dev2 အုပ်စု (ဆော့ဖ်ဝဲရေးသားသူအသုံးပြုသူ၏ ပင်မအုပ်စုကို ပြောင်းလဲခြင်းသည် အကူအညီဖြစ်မည်မဟုတ်ပါ၊ အဘယ်ကြောင့်ဆိုသော် သင်သည် ပရောဂျက်များစွာကို မည်သို့လုပ်ဆောင်နိုင်သနည်း။) ဤကိစ္စတွင်၊ အသုံးပြုသူ dev2 သည် အသုံးပြုသူ dev1 မှ ဖန်တီးထားသော ဖိုင်များကို ပြောင်းလဲနိုင်မည်မဟုတ်ပါ၊ ၎င်းသည် လုပ်ဆောင်နိုင်စွမ်းကို ပြိုကွဲသွားစေနိုင်သည်။

Linux chown - ပုံမှန်အသုံးပြုသူတစ်ဦးမှ ဖိုင်တစ်ခု၏ပိုင်ရှင်ကို ပြောင်းလဲခြင်း။

ဖိုင်တစ်ခု၏ပိုင်ရှင်သည် ၎င်း၏ပိုင်ဆိုင်မှုကို မပြောင်းလဲနိုင်ပါ။ ဒါပေမယ့် သူပိုင်တဲ့ ဖိုင်အုပ်စုကို ပြောင်းနိုင်တယ်၊ ပြီးတော့ ဒီဖိုင်ကို အုပ်စုတစ်ခုတည်းမှာရှိတဲ့ တခြားအသုံးပြုသူတွေက ပြုပြင်နိုင်ပါတယ်။ အဲဒါ ကျွန်တော်တို့ လိုအပ်တယ်။

Git ချိတ်ကိုအသုံးပြုခြင်း။

ချိတ်အတွက် အလုပ်လုပ်သောလမ်းညွှန်သည် ပရောဂျက်၏ အမြစ်လမ်းညွှန်ဖြစ်သည်။ hook သည် push လုပ်သည့် user အောက်တွင်အလုပ်လုပ်သော executable တစ်ခုဖြစ်သည်။ ဒါကိုသိရင် ကျွန်တော်တို့ရဲ့ အစီအစဉ်တွေကို အကောင်အထည်ဖော်နိုင်မှာပါ။

[dev1@server proj2]$ mv hooks/post-update{.sample,}
[dev1@server proj2]$ sed -i '2,$ s/^/#/' hooks/post-update
[dev1@server proj2]$ cat <<< 'find . -group $(whoami) -exec chgrp proj2 '"'"'{}'"'"' ;' >> hooks/post-update

ဖြစ်ဖြစ်ပေါ့

vi hooks/post-update

Client စက်ဆီ ပြန်သွားရအောင်။

C:gittest>echo "dev1 3rd line" >> test1.txt

C:gittest>git commit -am "3rd from dev1, testing server hook"
[master b045e22] 3rd from dev1, testing server hook
 1 file changed, 1 insertion(+)

C:gittest>git push origin master
dev1:[email protected]'s password:
   d22c66e..b045e22  master -> master

Git server တွင်၊ commit ပြီးနောက် hook post-update script ၏လုပ်ဆောင်ချက်ကို စစ်ဆေးပါသည်။

[dev1@server proj2]$ find . ! -group proj2

- ဗလာ၊ အားလုံးအဆင်ပြေတယ်။

Git တွင် ဒုတိယ developer နှင့် ချိတ်ဆက်ခြင်း။

ဒုတိယဆော့ဖ်ဝဲရေးသားသူ၏အလုပ်ကို ပုံဖော်ကြည့်ရအောင်။

အမှုသည်အပေါ်

C:gittest>git remote remove origin

C:gittest>git remote add origin "ssh://[email protected]/var/gitservertest/proj2"

C:gittest>echo "!!! dev2 added this" >> test1.txt

C:gittest>echo "!!! dev2 wrote" > test2.txt

C:gittest>git add test2.txt

C:gittest>git commit -am "dev2 added to test1 and created test2"
[master 55d49a6] dev2 added to test1 and created test2
 2 files changed, 2 insertions(+)
 create mode 100644 test2.txt

C:gittest>git push origin master
[email protected]'s password:
   b045e22..55d49a6  master -> master

တစ်ချိန်တည်းမှာပင် ဆာဗာပေါ်တွင်...

[dev1@server proj2]$ find . ! -group proj2

- ထပ်ပြီး ဗလာ၊ အားလုံး အဆင်ပြေတယ်။

Git ပရောဂျက်ကို ဖျက်ခြင်းနှင့် Git ဆာဗာမှ ပရောဂျက်ကို ဒေါင်းလုဒ်လုပ်ခြင်း။

ကောင်းပြီ၊ အပြောင်းအလဲများအားလုံးကို သိမ်းဆည်းပြီးဖြစ်ကြောင်း သေချာအောင် နောက်တစ်ကြိမ် ထပ်လုပ်နိုင်ပါသည်။

C:gittest>rd /S /Q .
Процесс не может получить доступ к файлу, так как этот файл занят другим процессом.

- Git ပရောဂျက်တစ်ခုကို ဖျက်ရန်၊ လမ်းညွှန်ကို လုံးဝရှင်းပစ်လိုက်ပါ။ ဤ command ကို အသုံးပြု၍ လက်ရှိ directory ကို ဖျက်ရန် မဖြစ်နိုင်သောကြောင့် ထုတ်လုပ်လိုက်သော error ကို ရှင်းလိုက်ရအောင်၊ သို့သော် ၎င်းသည် ကျွန်ုပ်တို့ လိုအပ်သည့် အပြုအမူ အတိအကျ ဖြစ်ပါသည်။

C:gittest>dir
 Содержимое папки C:gittest

21.06.2019  08:43    <DIR>          .
21.06.2019  08:43    <DIR>          ..

C:gittest>git clone ssh://[email protected]/var/gitservertest/proj2
Cloning into 'proj2'...
[email protected]'s password:

C:gittest>cd proj2

C:gittestproj2>dir
 Содержимое папки C:gittestproj2

21.06.2019  08:46    <DIR>          .
21.06.2019  08:46    <DIR>          ..
21.06.2019  08:46               114 test1.txt
21.06.2019  08:46                19 test2.txt
C:gittestproj2>type test1.txt
"test dev1 to proj2"
"dev1 added some omre"
"dev1 3rd line"
"!!! dev2 added this"

C:gittestproj2>type test2.txt
"!!! dev2 wrote"

Git တွင် ဝင်ရောက်မျှဝေခြင်း

ယခု Git မှတစ်ဆင့် ဒုတိယ developer သည် အလုပ်မလုပ်သော Proj1 ပရောဂျက်ကို ဝင်ရောက်၍မရကြောင်း သေချာပါစေ။

C:gittestproj2>git remote remove origin

C:gittestproj2>git remote add origin "ssh://[email protected]/var/gitservertest/proj1"

C:gittestproj2>git push origin master
[email protected]'s password:
fatal: '/var/gitservertest/proj1' does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

ယခုကျွန်ုပ်တို့ဝင်ရောက်ခွင့်ပြုသည်။

[root@server ~]# usermod -aG proj1 dev2

အဲဒီနောက်မှာ အားလုံးအဆင်ပြေပါတယ်။

C:gittestproj2>git push origin master
[email protected]'s password:
To ssh://10.1.1.11/var/gitservertest/proj1
 * [new branch]      master -> master

ပိုမိုသိရှိလိုပါက,

ထို့အပြင်၊ ဖိုင်များနှင့်လမ်းညွှန်များဖန်တီးရာတွင် ပုံသေခွင့်ပြုချက်များနှင့် ပြဿနာရှိပါက CentOS တွင် သင်သည် command ကိုသုံးနိုင်သည်။

setfacl -Rd -m o::5 -m g::7 /var/gitservertest

ဆောင်းပါးတွင်လည်း အသုံးဝင်သော အရာလေးများကို မှားမိနိုင်သည်-

  • Linux တွင် directory tree ကိုဘယ်လိုတည်ဆောက်မလဲ။
  • အချို့သောစာကြောင်းမှဖိုင်၏အဆုံးအထိ sed တွင်လိပ်စာအကွာအဝေးကိုမည်သို့ဖြတ်သန်းရမည်နည်း၊ ဆိုလိုသည်မှာ ပထမစာကြောင်းမှလွဲ၍ လိုင်းအားလုံးတွင် sed ဖြင့်အစားထိုးပါ။
  • Linux find တွင် ရှာဖွေမှုအခြေအနေတစ်ခုကို ပြောင်းပြန်လှန်နည်း
  • Linux shell ရှိ one-liner ကို အသုံးပြု၍ လိုင်းများစွာကို loop တစ်ခုသို့ မည်သို့ဖြတ်သန်းရမည်နည်း။
  • bash တွင် single quotes များမှလွတ်မြောက်ရန်နည်းလမ်း
  • windows command line တွင်၎င်း၏အကြောင်းအရာအားလုံးပါသော directory ကိုမည်သို့ဖျက်မည်နည်း။
  • ဖိုင်ကိုပြန်မရေးဘဲ bash mv ကို နာမည်ပြောင်းနည်း

သင့်ရဲ့အာရုံစူးစိုက်မှုကိုကျေးဇူးတင်ပါသည်။

source: www.habr.com

မှတ်ချက် Add