en_US.UTF-8 UTF-8 zh_TW.UTF-8 UTF-8然後
locale-gen eselect locale list eselect locale set n.bashrc 加入或修改
export LANG="en_US.UTF-8" export LC_COLLATE="C"不用 LANG="zh_TW.URF-8" 是因為中文化之後很多錯誤訊息會看不懂 lol 參考:Gentoo Wiki
en_US.UTF-8 UTF-8 zh_TW.UTF-8 UTF-8然後
locale-gen eselect locale list eselect locale set n.bashrc 加入或修改
export LANG="en_US.UTF-8" export LC_COLLATE="C"不用 LANG="zh_TW.URF-8" 是因為中文化之後很多錯誤訊息會看不懂 lol 參考:Gentoo Wiki
emerge --ask net-fs/smbnetfs mkdir ~/.smb bunzip2 -c /usr/share/doc/smbnetfs-0.6.0/smbnetfs.conf.bz2 > ~/.smb/smbnetfs.conf vim ~/.smb/smbnetfs.auth chmod 600 ~/.smb/smbnetfs.auth smbnetfs -o uid=你的uid,gid=你的gid,umask=0022 ~/mnt使用方式
ls -al ~/mnt/SAMBAIP
auth serverip username "PASSWORD"
cd ProjectA mkdir ProjectA cd ProjectB mkdir ProjectB
cd ProjectA git mv -k * ProjectA cd ProjectB git mv -k * ProjectB
cd ProjectA git commit -m "合併 repo" cd ProjectB git commit -m "合併 repo"
cd ProjectC git remote add PDA ../ProjectA git remote add PDB ../ProjectB
git checkout master git pull PDA master git pull PDB master git checkout develop git pull PDA develop git pull PDB develop
git log --oneline --graph --decorate --all
git push
git clone -n git@git.example.com:Project/Demo.git git config core.sparsecheckout true echo "Path/You/Want/To/Checkout/" >> .git/info/sparse-checkout git checkout develop
git filter-branch -f --subdirectory-filter 這裡/是你/要拆/的/子目錄 -- --all git remote -v git remote set-url origin https://gitlab.example.com/Demo/DemoPoroject.Web.git git remote -v git push -u origin master git remote set-url origin https://github.com/本來/的.來源.git git pull git reset origin/master --hard然後重複以上動作即可。
sudo portsnap fetch update然後,進場安裝 gitlab
cd /usr/ports/www/gitlab然後照著 文件 一步一步設定,大致上就能跑起來。 當中遇到幾個小問題: 現存 nginx 已經設定過,所以要自己生一組 vhost 設定檔,姑且叫他 gitlab.conf:
upstream gitlab-workhorse {
server unix:/usr/local/www/gitlab/tmp/sockets/gitlab-workhorse.socket fail_timeout=0;
}
server {
listen 80;
server_name 你的DOMAIN;
rewrite ^ https://$server_name$request_uri? permanent;
}
server {
listen 443;
server_name 你的DOMAIN;
server_tokens off;
charset utf-8;
error_log /PATH_TO/nginx-error.log info;
access_log /PATH_TO/nginx-access.log combined;
ssl on;
ssl_certificate /PATH_TO/ssl.pem;
ssl_certificate_key /PATH_TO/ssl.key;
location / {
client_max_body_size 0;
gzip off;
## https://github.com/gitlabhq/gitlabhq/issues/694
## Some requests take more than 30 seconds.
proxy_read_timeout 300;
proxy_connect_timeout 300;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://gitlab-workhorse;
}
error_page 404 /404.html;
error_page 422 /422.html;
error_page 500 /500.html;
error_page 502 /502.html;
error_page 503 /503.html;
location ~ ^/(404|422|500|502|503)\.html$ {
root /usr/local/www/gitlab/public;
internal;
}
}
然後把 nginx 重跑,記得先把 gitlab 跑起來
service gitlab start然後可以注意一下 gitlab:check 裡面的問題,一一把它修復:
cd /usr/local/www/gitlab rake gitlab:check RAILS_ENV=production當中我一直遇到 gitlab-shell 的問題
cd /usr/local/share/gitlab-shell/ ./bin/check發現說我 url 改錯了,所以,所以編輯一下
#不是 FQDN gitlab_url: "http://localhost:8080" http_settings: self_signed_cert: false auth_file: "/PATH_TO_UR_SSH_AUTH_FILE/authorized_keys" # File that contains the secret key for verifying access to GitLab. # Default is .gitlab_shell_secret in the root directory. # secret_file: "/home/git/gitlab-shell/.gitlab_shell_secret" # Redis settings used for pushing commit notices to gitlab redis: bin: /usr/bin/redis-cli database: 0 socket: /var/run/redis/redis.sock # Comment out this line if you want to use TCP or Sentinel namespace: resque:gitlab log_file: "/var/log/gitlab-shell/gitlab-shell.log" log_level: INFO audit_usernames: false git_annex_enabled: false要注意的是這個檔案的空白、tab 會影響 parse 正確性,不要亂加空白。 然後還是跑不起來,發現 /usr/local/share/gitlab-shell/lib 少了 gitlab_reference_counter.rb 補給他:
cd /usr/local/share/gitlab-shell/lib fetch https://raw.githubusercontent.com/gitlabhq/gitlab-shell/master/lib/gitlab_reference_counter.rb重啟一次 service ,搞定。 Note1. 為什麼不用 pkg ?因為腦闆說 redmine 吃了很多要特別設定的 plugin ,ruby pkg 下去會爛光光。懶得確認狀況,不然我最近犯懶都習慣 pkg 到底了 XD
git subtree add --prefix=DIR1 git://git.repo.1 master git subtree add --prefix=DIR2 git://git.repo.2 master git subtree add --prefix=DIR3 git://git.repo.3 master git subtree add --prefix=DIR4 git://git.repo.4 master
mkdir temp cd temp git svn clone svn://repo1/ git svn clone svn://repo2/ git clone /path/to/repo3 git clone /path/to/repo4然後到每個 repo 裡去調整目錄,這裡最簡單的作法是把它搬到某個 dir 裡:
git filter-branch --index-filter 'git ls-files -s | perl -pe "s{\t\"?}{$&SUB_DIR/}" |GIT_INDEX_FILE=$GIT_INDEX_FILE.new git update-index --index-info && if test -f "$GIT_INDEX_FILE.new"; then mv $GIT_INDEX_FILE.new $GIT_INDEX_FILE; fi' HEAD
參考:
svn log --xml | grep author | sort -u | perl -pe 's/.*>(.*?)<.*/$1 = /' > author.txt
把 author.txt 轉換成需要的格式如下:
john = johnfoo = foo kevin = kevin johnny = johnny
git svn clone --trunk=/ --no-metadata --authors-file=author.txt svn://svn.my.doman/SVN-REPO-NAME NEW-GIT-REPO.git這裡強烈建議!強烈建議!強烈建議! 不要過 http_dav_svn,就算沒跑 svnserve ,設定一下跑起來不過是五分鐘以內的事,可以省掉很多奇怪的問題,尤其是當你是陳年的 repo 不知道裡面塞了什麼鬼東西的時候。
git svn fetch如果你不聽話或是情非得已過 http_mod_dav 然後出錯了,那就重複跑到結束吧。
pkg install openjdk8-jre-8.40.25_3
fetch http://repo1.maven.org/maven2/com/madgag/bfg/1.12.3/bfg-1.12.3.jar
java -jar bfg-1.12.3.jar --strip-blobs-bigger-than 50M NEW-GIT-REPO.git/ git reflog expire --expire=now --all && git gc --prune=now --aggressive
git remote add origin git@github.com:myORG/myProjectDir.git git push -u origin master
Counting objects: 82461, done. Delta compression using up to 4 threads. Compressing objects: 100% (29301/29301), done. remote: fatal: pack exceeds maximum allowed size error: pack-objects died of signal 132.00 GiB | 2.53 MiB/s代表這一次的 commit 還是超過大小,只好拆開來塞:這裡有教你這麼做:
git push -u origin HEAD~1000:refs/heads/master git push -u origin HEAD~500:master git push -u origin master不過我的 revision range 語法一直看不懂所以我改成
git push -u origin 某個commit的hash:refs/heads/master git push -u origin 另外某個commit的hash:master git push -u origin master因為 git push 後面給某個 commit 的意思是,把這個 commit 之前都 commit,所以分開塞就可以啦。 至於怎麼找這段呢,就:
git log --pretty=oneline萬一你發現,連塞一個 commit 都不行的話,那就恭喜你啦!!!那個 commit 太大啦.... 想辦法把那個 commit 分解一下吧....
pkg install bind910 mkdir -p /usr/local/etc/namedb/keys cd /usr/local/etc/namedb/keys 產生所需密鑰 dnssec-keygen -b 512 -a HMAC-SHA512 -v 2 -n HOST my.domain.vim /usr/local/etc/namedb/named.conf
key my.domain. {
algorithm "HMAC-SHA512";
secret "COPY FROM PRIVATE KEY";
};
zone "my.domain" {
type master;
file "../dynamic/zone.fwd.my.domain";
also-notify { SLAVE_DNS_IP;};
allow-transfer { SLAVE_DNS_IP;};
allow-update{
key my.domain;
};
};
pkg install bind-tools把 Server 產的 Key 想辦法(用SCP)送回 client
vim update.sh #!/bin/sh MYNS="host.my.domain" NSSERVER="ns.my.domain" KEY="KeyPATH.private" NOW_IP=`ifconfig tun0 | grep inet | cut -d ' ' -f 2`; OLD_IP=`nslookup -type=a $MYNS | tail -n 3 | grep Address | cut -d ' ' -f 2`; if [ $OLD_IP != $NOW_IP ] then echo "update IP: $NOW_IP to DDNS Server" echo "server $NSSERVER " >> /tmp/.ddns.$$ echo "update delete $MYNS. A " >> /tmp/.ddns.$$ echo "update add $MYNS. 30 A $NOW_IP" >> /tmp/.ddns.$$ echo "" >> /tmp/.ddns.$$ nsupdate -k $KEY < /tmp/.ddns.$$ rm /tmp/.ddns.$$ fi exit 0
HiNET: !bg /PATH_TO_THE_SCRIPT/updatens.sh當中 HiNET 是 /etc/ppp/ppp.conf 裡面對應的 Label 搞定收工。
然後/usr/sbin/smbd -no-symlinks
$sudo launchctl unload /System/Library/LaunchDaemons/com.apple.smbd.plist $sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.smbd.plist
pwpolicy -u SomeUser -sethashtypes SMB-NT on dscl . -passwd /Users/SomeUser "UserPassword"
setenv CLICOLOR 1
setenv LSCOLORS ExGxFxdxCxDxDxBxBxExEx
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key><string>VsMdaAgent</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/node</string>
<string>/usr/local/bin/vs-mda-remote</string>
<string>--secure</string>
<string>false</string>
<string>--serverDir</string>
<string>/Users/VsMdaAgent/remote-builds/builds</string>
</array>
<key>KeepAlive</key><true>
<key>LaunchOnlyOnce</key><true>
<key>UserName</key><string>VsMdaAgent</string>
</dict>
</plist>
然後測試一下:
啟動 launchctl load -F /Library/LaunchDaemons/tw.com.skymirror.vs-mda-remote.plist 停止 launchctl load -F /Library/LaunchDaemons/tw.com.skymirror.vs-mda-remote.plist看一下 /var/log/system.log 有沒有錯誤訊息,然後 netstat -an |grep 3000 看有沒有跑起來。重開看看運作正不正常。
/usr/local/lib/ruby/2.1/tmpdir.rb:34:in `tmpdir': could not find a temporary directory (ArgumentError)就把 /tmp 的 Sticky bit 加上去吧
chmod +t /tmp最近怎麼老是被 server 咬呢 :~~
email_delivery:
delivery_method: :smtp
smtp_settings:
enable_starttls_auto: true
address: "smtp.gmail.com"
port: 587
domain: "your.domain"
authentication: :plain
user_name: "youraccount@your.domain"
password: "yourpassword"
email_delivery:
delivery_method: :sendmail
sendmail_settings:
arguments: '-i'
後看一看 maillog 有這常運作的話就可以收工了。
這樣總不會又被 google 把信丟到黑洞裡去了吧.....。
mkdir -p /usr/local/etc/pkg/repos
vim /usr/local/etc/pkg/repos/FreeBSD.conf
---
FreeBSD: {
url: "pkg+http://pkg.FreeBSD.org/${ABI}/latest",
mirror_type: "srv",
enabled: yes
}
---
然後就可以愉快的使用 pkg 了。freebsd-update upgrade -r 9.3-RELEASE freebsd-update install
portmaster portmaster pkg
portmaster -a
/c0/u1 del /c0/u0 start rebuild disk=0 ignoreECC