ืืจื’ื•ืŸ ื’ื™ืฉื” ืžืจื•ื‘ื” ืžืฉืชืžืฉื™ื ืœืฉืจืช GIT

ื‘ืขืช ื”ืชืงื ื” ื•ื”ื’ื“ืจื” ืฉืœ ืฉืจืช Git, ืขื•ืœื” ื”ืฉืืœื” ืœื’ื‘ื™ ืืจื’ื•ืŸ ื’ื™ืฉื” ืœืžืกืคืจ ืžืฉืชืžืฉื™ื ืœืžืกืคืจ ืคืจื•ื™ืงื˜ื™ื. ื—ืงืจืชื™ ืืช ื”ื ื•ืฉื ื•ืžืฆืืชื™ ืคืชืจื•ืŸ ืฉืขื ื” ืขืœ ื›ืœ ื”ื“ืจื™ืฉื•ืช ืฉืœื™: ืคืฉื•ื˜, ื‘ื˜ื•ื—, ืืžื™ืŸ.

ื”ืžืฉืืœื•ืช ืฉืœื™ ื”ืŸ:

  • ื›ืœ ืžืฉืชืžืฉ ืžืชื—ื‘ืจ ืœื—ืฉื‘ื•ืŸ ืฉืœื•
  • ืžืกืคืจ ืžืฉืชืžืฉื™ื ื™ื›ื•ืœื™ื ืœืขื‘ื•ื“ ืขืœ ืคืจื•ื™ืงื˜ ืื—ื“
  • ืื•ืชื• ืžืฉืชืžืฉ ื™ื›ื•ืœ ืœืขื‘ื•ื“ ืขืœ ืžืกืคืจ ืคืจื•ื™ืงื˜ื™ื
  • ืœื›ืœ ืžืฉืชืžืฉ ื™ืฉ ื’ื™ืฉื” ืจืง ืœืคืจื•ื™ืงื˜ื™ื ืฉื‘ื”ื ื”ื•ื ืขื•ื‘ื“
  • ื–ื” ืืžื•ืจ ืœื”ื™ื•ืช ืืคืฉืจื™ ืœื”ืชื—ื‘ืจ ื“ืจืš ืฉื•ืจืช ื”ืคืงื•ื“ื”, ื•ืœื ืจืง ื“ืจืš ืื™ื–ืฉื”ื• ืžืžืฉืง ืื™ื ื˜ืจื ื˜

ื–ื” ื’ื ื™ื”ื™ื” ื ื”ื“ืจ:

  • ืœื”ืขื ื™ืง ื”ืจืฉืื•ืช ืงืจื™ืื” ื‘ืœื‘ื“ ืœื‘ืขืœื™ ืฉืœื™ื˜ื”
  • ื ื™ื”ื•ืœ ื ื•ื— ืฉืœ ื–ื›ื•ื™ื•ืช ื’ื™ืฉื” ืœืžืฉืชืžืฉ ื‘-Git

ืกืงื™ืจื” ื›ืœืœื™ืช ืฉืœ ืืคืฉืจื•ื™ื•ืช ืืคืฉืจื™ื•ืช ืœื’ื™ืฉื” ืœืฉืจืช GIT

ืงื•ื“ื ื›ืœ, ืืชื” ืฆืจื™ืš ืœื“ืขืช ืžื” ืœื‘ื—ื•ืจ, ืื– ื”ื ื” ืกืงื™ืจื” ืžื”ื™ืจื” ืฉืœ ืคืจื•ื˜ื•ืงื•ืœื™ Git.

  • ssh - ื—ืฉื‘ื•ืŸ ืžืฉืชืžืฉ ืฉื ื•ืฆืจ ื‘ืžื™ื•ื—ื“ ืžืฉืžืฉ ืœื’ื™ืฉื” ืœืฉืจืช.
    • ืžื•ื–ืจ ืฉ-Git ืœื ืฉื•ืœืœืช ืžื”ื”ืžืœืฆื•ืช ืฉืœื” ืฉื™ืžื•ืฉ ื‘ื—ืฉื‘ื•ืŸ ืื—ื“ ื›ื“ื™ ืœื’ืฉืช ืœื›ืœ ื”ืžืื’ืจื™ื. ื–ื” ื‘ื›ืœืœ ืœื ืขื•ื ื” ืขืœ ื”ื“ืจื™ืฉื•ืช ืฉืœื™.
    • ืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ืžืกืคืจ ื—ืฉื‘ื•ื ื•ืช, ืื‘ืœ ืื™ืš ืืชื” ื™ื›ื•ืœ ืœื”ื’ื‘ื™ืœ ืืช ื’ื™ืฉืช ื”ืžืฉืชืžืฉ ืœืกืคืจื™ื•ืช ืžืกื•ื™ืžื•ืช ื‘ืœื‘ื“?
      • ืกื’ื™ืจื” ืœืกืคืจื™ื™ืช ื”ื‘ื™ืช ืื™ื ื” ืžืชืื™ืžื”, ื›ื™ ืงืฉื” ืœืืจื’ืŸ ืฉื ื’ื™ืฉืช ื›ืชื™ื‘ื” ืขื‘ื•ืจ ืžืฉืชืžืฉื™ื ืื—ืจื™ื
      • ื”ืฉื™ืžื•ืฉ ื‘ืงื™ืฉื•ืจื™ื ืกื™ืžืœื™ื™ื ืžื”ืกืคืจื™ื™ื” ื”ื‘ื™ืชื™ืช ืฉืœืš ื”ื•ื ื’ื ืงืฉื” ืžื›ื™ื•ื•ืŸ ืฉ-Git ืœื ืžืคืจืฉ ืื•ืชื ื›ืงื™ืฉื•ืจื™ื
      • ืืคืฉืจ ืœื”ื’ื‘ื™ืœ ืืช ื”ื’ื™ืฉื” ืœืžืชื•ืจื’ืžืŸ, ืื‘ืœ ืื™ืŸ ืขืจื•ื‘ื” ืžืœืื” ืฉื–ื” ืชืžื™ื“ ื™ืขื‘ื•ื“
        • ืืชื” ื™ื›ื•ืœ ื‘ื“ืจืš ื›ืœืœ ืœื—ื‘ืจ ืžืชื•ืจื’ืžืŸ ืคืงื•ื“ื•ืช ืžืฉืœืš ืขื‘ื•ืจ ืžืฉืชืžืฉื™ื ื›ืืœื”, ืื‘ืœ
          • ืจืืฉื™ืช, ื–ื• ื›ื‘ืจ ืื™ื–ื•ืฉื”ื™ ื”ื—ืœื˜ื” ืงืฉื”,
          • ื•ืฉื ื™ืช, ื ื™ืชืŸ ืœืขืงื•ืฃ ื–ืืช.

    ืื‘ืœ ืื•ืœื™ ื–ื• ืœื ื‘ืขื™ื” ืฉื”ืžืฉืชืžืฉ ื™ื•ื›ืœ ืœื‘ืฆืข ืคืงื•ื“ื•ืช ื›ืœืฉื”ืŸ?.. ื‘ืื•ืคืŸ ื›ืœืœื™, ืœื ื ื™ืชืŸ ืœืฉืœื•ืœ ืืช ื”ืฉื™ื˜ื” ื”ื–ื• ืื ืชื‘ื™ื ื• ื‘ื“ื™ื•ืง ืื™ืš ืœื”ืฉืชืžืฉ ื‘ื”. ื ื—ื–ื•ืจ ืœืฉื™ื˜ื” ื”ื–ื• ืžืื•ื—ืจ ื™ื•ืชืจ, ืื‘ืœ ืœืขืช ืขืชื” ื ืฉืงื•ืœ ื‘ืงืฆืจื” ืืช ื”ืืœื˜ืจื ื˜ื™ื‘ื•ืช ื”ืื—ืจื•ืช, ืื•ืœื™ ื™ื”ื™ื” ืžืฉื”ื• ืคืฉื•ื˜ ื™ื•ืชืจ.

  • ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ืคืจื•ื˜ื•ืงื•ืœ ื”ืžืงื•ืžื™ ืฉืœ git ื‘ืฉื™ืœื•ื‘ ืขื sshfs, ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ืžืกืคืจ ืžืฉืชืžืฉื™ื, ืื‘ืœ ื‘ืขืฆื ื–ื”ื” ืœืžืงืจื” ื”ืงื•ื“ื
  • http - ืœืงืจื™ืื” ื‘ืœื‘ื“
  • git ื”ื•ื ืœืงืจื™ืื” ื‘ืœื‘ื“
  • https - ืงืฉื” ืœื”ืชืงื ื”, ืฆืจื™ืš ืชื•ื›ื ื” ื ื•ืกืคืช, ืื™ื–ืฉื”ื• ืœื•ื— ื‘ืงืจื” ื›ื“ื™ ืœืืจื’ืŸ ืืช ื’ื™ืฉืช ื”ืžืฉืชืžืฉ... ื–ื” ื ืจืื” ืืคืฉืจื™, ืื‘ืœ ืื™ื›ืฉื”ื• ื”ื›ืœ ืžืกื•ื‘ืš.

ืฉื™ืžื•ืฉ ื‘ืคืจื•ื˜ื•ืงื•ืœ ssh ืœืืจื’ื•ืŸ ื’ื™ืฉื” ืžืจื•ื‘ื” ืžืฉืชืžืฉื™ื ืœืฉืจืช Git

ื ื—ื–ื•ืจ ืœืคืจื•ื˜ื•ืงื•ืœ ssh.

ืžื›ื™ื•ื•ืŸ ืฉืืชื” ืžืฉืชืžืฉ ื‘ื’ื™ืฉื” ืœ-ssh ืขื‘ื•ืจ git, ืืชื” ืฆืจื™ืš ืœื”ื‘ื˜ื™ื— ืืช ื”ืื‘ื˜ื—ื” ืฉืœ ื ืชื•ื ื™ ื”ืฉืจืช. ื”ืžืฉืชืžืฉ ืฉืžืชื—ื‘ืจ ื“ืจืš ssh ืžืฉืชืžืฉ ื‘ื›ื ื™ืกื” ืžืฉืœื• ื‘ืฉืจืช ื”ืœื™ื ื•ืงืก, ื›ืš ืฉื”ื•ื ื™ื›ื•ืœ ืœื”ืชื—ื‘ืจ ื“ืจืš ืœืงื•ื— ssh ื•ืœื’ืฉืช ืœืฉื•ืจืช ื”ืคืงื•ื“ื” ืฉืœ ื”ืฉืจืช.
ืื™ืŸ ื”ื’ื ื” ืžืœืื” ืžืคื ื™ ื’ื™ืฉื” ื›ื–ื•.

ืื‘ืœ ื”ืžืฉืชืžืฉ ืœื ืืžื•ืจ ืœื”ืชืขื ื™ื™ืŸ ื‘ืงื‘ืฆื™ ืœื™ื ื•ืงืก. ืžื™ื“ืข ืžืฉืžืขื•ืชื™ ืžืื•ื—ืกืŸ ืจืง ื‘ืžืื’ืจ git. ืœื›ืŸ, ื ื™ืชืŸ ืœื ืœื”ื’ื‘ื™ืœ ืืช ื”ื’ื™ืฉื” ื“ืจืš ืฉื•ืจืช ื”ืคืงื•ื“ื”, ืืœื ืœื”ืฉืชืžืฉ ื‘ื›ืœื™ ืœื™ื ื•ืงืก ื›ื“ื™ ืœืืกื•ืจ ืขืœ ื”ืžืฉืชืžืฉ ืœืฆืคื•ืช ื‘ืคืจื•ื™ืงื˜ื™ื, ืœืžืขื˜ ืืœื• ืฉื‘ื”ื ื”ื•ื ืžืฉืชืชืฃ.
ื”ื‘ื—ื™ืจื” ื”ื‘ืจื•ืจื” ื”ื™ื ืœื”ืฉืชืžืฉ ื‘ืžืขืจื›ืช ื”ื”ืจืฉืื•ืช ืœื™ื ื•ืงืก.

ื›ืคื™ ืฉื›ื‘ืจ ืฆื•ื™ืŸ, ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ืจืง ื‘ื—ืฉื‘ื•ืŸ ืื—ื“ ืขื‘ื•ืจ ื’ื™ืฉืช ssh. ืชืฆื•ืจื” ื–ื• ืื™ื ื” ื‘ื˜ื•ื—ื” ืขื‘ื•ืจ ืžืกืคืจ ืžืฉืชืžืฉื™ื, ืœืžืจื•ืช ืฉื”ื™ื ื›ืœื•ืœื” ื‘ืจืฉื™ืžืช ืืคืฉืจื•ื™ื•ืช ื”-GIT ื”ืžื•ืžืœืฆื•ืช.

ื›ื“ื™ ืœื™ื™ืฉื ืืช ื”ื“ืจื™ืฉื•ืช ืฉื ื™ืชื ื• ื‘ืชื—ื™ืœืช ื”ืžืืžืจ, ื ื•ืฆืจ ืžื‘ื ื” ื”ืกืคืจื™ื•ืช ื”ื‘ื ืขื ื”ืงืฆืืช ื–ื›ื•ื™ื•ืช ื•ื‘ืขืœื™ื:

1) ืกืคืจื™ื•ืช ืคืจื•ื™ืงื˜ื™ื

dir1(proj1:proj1,0770)
dir2(proj2:proj2,0770)
dir3(proj3:proj3,0770)
...
ืื™ืคื”
dir1, dir2, dir3 - ืกืคืจื™ื•ืช ืคืจื•ื™ืงื˜ื™ื: ืคืจื•ื™ืงื˜ 1, ืคืจื•ื™ืงื˜ 2, ืคืจื•ื™ืงื˜ 3.

proj1:proj1, proj2:proj2, proj3:proj3 ื”ื ืžืฉืชืžืฉื™ ืœื™ื ื•ืงืก ืฉื ื•ืฆืจื• ื‘ืžื™ื•ื—ื“ ื”ืžื•ืงืฆื™ื ื›ื‘ืขืœื™ื ืฉืœ ืกืคืจื™ื•ืช ื”ืคืจื•ื™ืงื˜ื™ื ื”ืžืชืื™ืžื•ืช.

ื”ื”ืจืฉืื•ืช ืœื›ืœ ื”ืกืคืจื™ื•ืช ืžื•ื’ื“ืจื•ืช ืœ-0770 - ื’ื™ืฉื” ืžืœืื” ืœื‘ืขืœื™ื ื•ืœืงื‘ื•ืฆื” ืฉืœื• ื•ืื™ืกื•ืจ ืžื•ื—ืœื˜ ืœื›ืœ ื”ืฉืืจ.

2) ื—ืฉื‘ื•ื ื•ืช ืžืคืชื—ื™ื

ะ ะฐะทั€ะฐะฑะพั‚ั‡ะธะบ 1: dev1:dev1,proj1,proj2
ะ ะฐะทั€ะฐะฑะพั‚ั‡ะธะบ 2: dev2:dev2,proj2,proj3

ื ืงื•ื“ืช ื”ืžืคืชื— ื”ื™ื ืฉืžืคืชื—ื™ื ืžื•ืงืฆื™ืช ืงื‘ื•ืฆื” ื ื•ืกืคืช ืฉืœ ื”ื‘ืขืœื™ื ืฉืœ ืžืฉืชืžืฉ ื”ืžืขืจื›ืช ืฉืœ ื”ืคืจื•ื™ืงื˜ ื”ืžืชืื™ื. ื–ื” ื ืขืฉื” ืขืœ ื™ื“ื™ ืžื ื”ืœ ืฉืจืช ืœื™ื ื•ืงืก ื‘ืคืงื•ื“ื” ืื—ืช.

ื‘ื“ื•ื’ืžื” ื–ื•, "ืžืคืชื— 1" ืขื•ื‘ื“ ืขืœ ืคืจื•ื™ืงื˜ื™ื proj1 ื•-proj2, ื•-"ืžืคืชื— 2" ืขื•ื‘ื“ ืขืœ ืคืจื•ื™ืงื˜ื™ื proj2 ื•-proj3.

ืื ืžื™ืฉื”ื• ืžื”ืžืคืชื—ื™ื ืžืชื—ื‘ืจ ื‘ืืžืฆืขื•ืช ssh ื“ืจืš ืฉื•ืจืช ื”ืคืงื•ื“ื”, ืื–ื™ ื”ื–ื›ื•ื™ื•ืช ืฉืœื• ืœื ื™ืกืคื™ืงื• ืืคื™ืœื• ื›ื“ื™ ืœืฆืคื•ืช ื‘ืชื•ื›ืŸ ืฉืœ ืกืคืจื™ื•ืช ืคืจื•ื™ืงื˜ื™ื ืฉื‘ื”ืŸ ื”ื•ื ืœื ืฉื•ืชืฃ. ื”ื•ื ืœื ื™ื›ื•ืœ ืœืฉื ื•ืช ื–ืืช ื‘ืขืฆืžื•.

ืžื›ื™ื•ื•ืŸ ืฉื”ื‘ืกื™ืก ืœืขื™ืงืจื•ืŸ ื–ื” ื”ื•ื ื”ืื‘ื˜ื—ื” ื”ื‘ืกื™ืกื™ืช ืฉืœ ื–ื›ื•ื™ื•ืช ืœื™ื ื•ืงืก, ืกื›ื™ืžื” ื–ื• ืืžื™ื ื”. ื‘ื ื•ืกืฃ, ื”ืชื•ื›ื ื™ืช ืงืœื” ืžืื•ื“ ืœื ื™ื”ื•ืœ.

ื‘ื•ืื• ื ืขื‘ื•ืจ ืœืชืจื’ื•ืœ.

ื™ืฆื™ืจืช ืžืื’ืจื™ Git ื‘ืฉืจืช ืœื™ื ื•ืงืก

ื‘ื•ื ื ื‘ื“ื•ืง.

[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

ืื ื• ืžืฉื•ื›ื ืขื™ื ืฉืื™ ืืคืฉืจ ืœื’ืฉืช ืœืžืื’ืจื™ื ืฉืœ ืื ืฉื™ื ืื—ืจื™ื ืžืฉื•ืจืช ื”ืคืงื•ื“ื” ื•ืืคื™ืœื• ืœื”ืฆื™ื’ ืืช ืชื•ื›ื ื.

[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

ื ื•ืชืจื” ืฉืืœื” ืื—ืช, ืื ืžืคืชื— ืื—ื“ ืžืฆื™ื’ ืงื•ื‘ืฅ ื—ื“ืฉ, ืžืคืชื—ื™ื ืื—ืจื™ื ืœื ื™ื›ื•ืœื™ื ืœืฉื ื•ืช ืื•ืชื•, ื›ื™ ื”ื•ื ืขืฆืžื• ื”ื‘ืขืœื™ื ืฉืœื• (ืœื“ื•ื’ืžื”, dev1), ื•ืœื ื”ื‘ืขืœื™ื ืฉืœ ื”ืžืฉืชืžืฉ ืฉืœ ื”ืคืจื•ื™ืงื˜ (ืœื“ื•ื’ืžื”, proj1). ืžื›ื™ื•ื•ืŸ ืฉื™ืฉ ืœื ื• ืžืื’ืจ ื‘ืฆื“ ื”ืฉืจืช, ืงื•ื“ื ื›ืœ, ืขืœื™ื ื• ืœื“ืขืช ื›ื™ืฆื“ ื‘ื ื•ื™ื” ืกืคืจื™ื™ืช ".git" ื•ื”ืื ื ื•ืฆืจื™ื ืงื‘ืฆื™ื ื—ื“ืฉื™ื.

ื™ืฆื™ืจืช ืžืื’ืจ Git ืžืงื•ืžื™ ื•ื“ื—ื™ืคื” ืœืฉืจืช Git

ื‘ื•ืื• ื ืขื‘ื•ืจ ืœืžื—ืฉื‘ ื”ืœืงื•ื—.

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 ื”ื™ื ืกืคืจื™ื™ืช ื”ื‘ืกื™ืก ืฉืœ ื”ืคืจื•ื™ืงื˜. hook ื”ื•ื ืงื•ื‘ืฅ ื”ืคืขืœื” ืฉืจืฅ ืžืชื—ืช ืœืžืฉืชืžืฉ ืฉืขื•ืฉื” ืืช ื”ื“ื—ื™ืคื”. ื‘ื™ื“ื™ืขื” ื–ื• ื ื•ื›ืœ ืœื™ื™ืฉื ืืช ื”ืชื•ื›ื ื™ื•ืช ืฉืœื ื•.

[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

ื‘ื•ืื• ื ื—ื–ื•ืจ ืœืžื›ื•ื ืช ื”ืœืงื•ื—.

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, ืื ื• ื‘ื•ื“ืงื™ื ืืช ืคืขื•ืœืช ื”ืกืงืจื™ืคื˜ ืฉืœืื—ืจ ืขื“ื›ื•ืŸ ื”-hook ืœืื—ืจ ื”-commit

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

- ืจื™ืง, ื”ื›ืœ ื‘ืกื“ืจ.

ื—ื™ื‘ื•ืจ ืžืคืชื— ืฉื ื™ ื‘-Git

ื‘ื•ืื• ื ื“ืžื” ืืช ืขื‘ื•ื“ืชื• ืฉืœ ื”ืžืคืชื— ื”ืฉื ื™.

ืขืœ ื”ืœืงื•ื—

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, ืคืฉื•ื˜ ื ืงื” ืืช ื”ืกืคืจื™ื™ื” ืœื—ืœื•ื˜ื™ืŸ. ื‘ื•ื ื ืฉืœื™ื ืขื ื”ืฉื’ื™ืื” ืฉื ื•ืฆืจืช, ืžื›ื™ื•ื•ืŸ ืฉืื™ ืืคืฉืจ ืœืžื—ื•ืง ืืช ื”ืกืคืจื™ื™ื” ื”ื ื•ื›ื—ื™ืช ื‘ืืžืฆืขื•ืช ื”ืคืงื•ื“ื” ื”ื–ื•, ืื‘ืœ ื–ื• ื‘ื“ื™ื•ืง ื”ื”ืชื ื”ื’ื•ืช ืฉืื ื—ื ื• ืฆืจื™ื›ื™ื.

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 ื”ืžืคืชื— ื”ืฉื ื™ ืœื ื™ื›ื•ืœ ืœื’ืฉืช ืœืคืจื•ื™ืงื˜ 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 ืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ืคืงื•ื“ื”

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

ื›ืžื• ื›ืŸ ื‘ืžืืžืจ ืืชื” ืขืœื•ืœ ืœื”ื™ืชืงืœ ื‘ื“ื‘ืจื™ื ืฉื™ืžื•ืฉื™ื™ื ืงื˜ื ื™ื:

  • ื›ื™ืฆื“ ืœื‘ื ื•ืช ืขืฅ ืกืคืจื™ื•ืช ื‘ืœื™ื ื•ืงืก
  • ื›ื™ืฆื“ ืœื”ืขื‘ื™ืจ ื˜ื•ื•ื— ื›ืชื•ื‘ื•ืช ื‘-sed ืžืฉื•ืจื” ืžืกื•ื™ืžืช ืœืกื•ืฃ ื”ืงื•ื‘ืฅ, ื›ืœื•ืžืจ ืœื‘ืฆืข ื”ื—ืœืคื” ื‘-sed ื‘ื›ืœ ื”ืฉื•ืจื•ืช ืžืœื‘ื“ ื”ืฉื•ืจื” ื”ืจืืฉื•ื ื”
  • ื›ื™ืฆื“ ืœื”ืคื•ืš ืชื ืื™ ื—ื™ืคื•ืฉ ื‘-Linux find
  • ื›ื™ืฆื“ ืœื”ืขื‘ื™ืจ ืฉื•ืจื•ืช ืžืจื•ื‘ื•ืช ืœืœื•ืœืื” ื‘ืืžืฆืขื•ืช one-liner ื‘ืžืขื˜ืคืช ืœื™ื ื•ืงืก
  • ืื™ืš ืœื‘ืจื•ื— ืžืžืจื›ืื•ืช ื‘ื•ื“ื“ื•ืช ื‘-bash
  • ื›ื™ืฆื“ ืœืžื—ื•ืง ืกืคืจื™ื™ื” ืขื ื›ืœ ื”ืชื•ื›ืŸ ืฉืœื” ื‘ืฉื•ืจืช ื”ืคืงื•ื“ื” ืฉืœ Windows
  • ื›ื™ืฆื“ ืœื”ืฉืชืžืฉ ื‘-bash mv ื›ื“ื™ ืœืฉื ื•ืช ืฉื ืฉืœ ืงื•ื‘ืฅ ืžื‘ืœื™ ืœืฉื›ืชื‘ ืื•ืชื• ืฉื•ื‘

ืชื•ื“ื” ืขืœ ืชืฉื•ืžืช ื”ืœื‘ ืฉืœืš.

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”