微軟於 2018/6/4 以 75億美金買下 GitHub,造成不少的開發專案都往 GitLab 搬移(遭微軟併購消息傳出,GitHub使用者大遷徙,蜂擁轉移至GitLab),來看看後續的發展~
- 註:我個人是覺得這是好事,畢竟 GitHub 並不賺錢,有大公司在後面撐腰,比較能長久經營下去~
個人筆記, 記錄關於 系統、程式、新聞 與 日常生活 等資訊
微軟於 2018/6/4 以 75億美金買下 GitHub,造成不少的開發專案都往 GitLab 搬移(遭微軟併購消息傳出,GitHub使用者大遷徙,蜂擁轉移至GitLab),來看看後續的發展~
Linux CLI 要查看 Git repository 的圖形顯示,可以使用 tig,視窗顯示查看可以使用 Gitk。
不過 tig 能看的比較有限,操作還是比較偏向 Git 命令列,而不是像 Gitk 上下左右的視窗可以即時看 Log、diff 等等的資料。
grv 就類同 CLI 版的 Gitk,而且執行速度很快,有空可以玩玩看~
Redmine 專案可以使用 GUI 的方式來查看 Git Repository 的 Commit / 歷史紀錄 等等資訊,但是在某個日期後,就一直無法更新,手動執行下述強制更新命令也沒用。
環境:Debian / Ubuntu Linux
要怎麼處理呢?
之前聽說 Google 把所有 Source code 都放在同一個 Git 管理,就覺得怪怪的,每個人或第一次 git pull 的時候應該都會炸掉才是。
註:此篇文章會說明,Google 確實把 Source code 放在同一個 Repository,不過是自己做的版本控制系統,不是 Git。
這篇文章把 Google 的程式碼版本控管都做詳細說明:Why Google Stores Billions of Lines of Code in a Single Repository
Gitolite 的某個 Project 要 push 後,自動到前端的機器自動更新,要如何做?
一般要實做 push 自動更新,只需要從 hooks/post-update 著手即可。
#!/bin/sh /usr/bin/ssh [email protected] "cd /var/www/project/;git pull"
但是 gitolite 會將 hooks 裡面的檔案權限都自動修改成 640 (不可執行)
所以換個作法:
#!/bin/sh /usr/bin/ssh [email protected] "cd /var/www/project/;git pull"
這樣子就可以 push 試試看囉~
Git 於 2016/3/17 有發現漏洞,而且問題不小,詳可見:Remote Code Execution in all git versions (client + server) < 2.7.1: CVE-2016-2324, CVE-2016‑2315
Git Diff 可以比對 Binary、Text,怎麼做的呢?
想要取得專案中目前在 Master 或 Branch,可以判斷要去抓不同的 config,可以使用此 function。
<?php function get_git_branch_name() { $git_head = './.git/HEAD'; return (file_exists($git_head)) ? implode('/', array_slice(explode('/', file_get_contents($git_head)), 2)) : ''; } ?>
註:$git_head 的路徑請自行修改設定。
使用方式:
<?php print_r(get_git_branch_name()); // master ?>
感謝 Fwolf 的建議,用 system 的指令執行:git branch | grep '*' | awk '{print $2}' ,可以解決 submodule 抓不到 branch 的問題
Git Submodule 的新增、使用 與 移除,在此篇一起做整理。
於 Facebook 的 PHP SDK 就是將此用 Git Submodule 拉進來使用的,最近查詢才發現忘了寫,最糟糕的是,沒想到這次 Facebook SDK 是需要移除整個換新的 Repository,所以將新增 / 移除一起寫。
時間過得真是有夠快的,沒想到 Git 已經十歲了,來看看 Git 的發展歷史吧~