Site cover image

Site icon image htrkwn.dat

Just a htrkwn's personal hobby scrapbook.

🔧 てがろぐスキンを開発する環境を作る(リトルサーバー)

前提: 😊 Arrow icon of a page link リトルサーバーを使ってみた

導入: 🔧 Arrow icon of a page link てがろぐ設置するまでの備忘録(リトルサーバー)

参考記事:

git用のディレクトリを作る

とりあえずリトルサーバー側にgit作業用ディレクトリを作ります。

SSH接続してpwdコマンドで現在位置を確認する。

pwd
/home/ユーザーID
ls
log  pub

公開ディレクトリは「pub」なので、pubよりも上の階層にgit用のディレクトリを作ります。

名前はわかりやすく「git」にします。

mkdir git
ls
git  log  pub

ベアリポジトリの作成

作成したgitディレクトリに移動してベアリポジトリのオプション--bareをつけてgit initします。

cd git
git init --bare /home/ユーザーID/git/my-tegalog-skin.git

//出力
Initialized empty Git repository in /home/ユーザーID/git/my-tegalog-skin.git/

ここがリモートリポジトリになります。

ベアリポジトリとは? (by ChatGPT 3.5)

Gitの"Bare Repository"(ベアリポジトリ)とは、通常のリポジトリとは異なる特殊な形態のGitリポジトリです。

通常、Gitリポジトリには、プロジェクトのコードや履歴を含む作業用のディレクトリと、リモートリポジトリとしての役割を果たす.gitディレクトリが含まれます。この.gitディレクトリには、プロジェクトの全てのバージョン履歴やブランチ、コミット、設定情報などが格納されています。

一方、ベアリポジトリは、作業用のディレクトリが存在せず、リモートリポジトリとしてのみ機能する特殊なリポジトリです。ベアリポジトリは、プロジェクトの実際のコードファイルを持たず、.gitディレクトリしか含みません。

ノンベアリポジトリの作成

リトルサーバー上の作業用ディレクトリに移動して普通にgit initします。

cd /home/ユーザーID/pub
cd path/to/directory
mkdir my-tegalog-skin
cd my-tegalog-skin
git init

// 出力
Initialized empty Git repository in /home/ユーザーID/pub/path/to/directory/my-tegalog-skin/.git/

リモートリポジトリにさっき作成したベアリポジトリを追加。

git remote add origin /home/ユーザーID/git/my-tegalog-skin.git
git remote -v
origin  /home/ユーザーID/git/my-tegalog-skin.git (fetch)
origin  /home/ユーザーID/git/my-tegalog-skin.git (push)

‼️.gitディレクトリ以下のフォルダ/ファイルにアクセスできないようにする
🔥
このノンベアリポジトリがwebで公開されているドキュメントルート配下にあるので、何も対策しない場合はURLを叩くとファイルが見えちゃう……!

これはよくないので.htaccessファイルで.gitにアクセスしても404を返すように対策します。

RedirectMatch 404 /\.git

参考記事:

gitユーザー登録

そういえばユーザー登録してなかったのでここで作業。

git config --local user.name [USERNAME]
git config --local user.email [MAILADDRESS]

// 確認
git config user.name

初めてのコミット(空コミット)
git commit --allow-empty -m "initial commit"

ちゃんと意味のあるコミットを作ってもいいんでしょうが今回は初回--allow-emptyのオプションを付けて空コミットで。ファイルなどは何もありません。

空でもコミットしたのでブランチも作成されたしpushもできます。

git branch
* master
git push origin master
Counting objects: 2, done.
Writing objects: 100% (2/2), 159 bytes | 0 bytes/s, done.
Total 2 (delta 0), reused 0 (delta 0)
To /home/ユーザーID/git/my-tegalog-skin.git
 * [new branch]      master -> master

🤔git sparse checkout を有効にして一部のサブディレクトリだけをチェックアウトできるようにする

ローカルで開発していくとして、その全部をwebに公開されているフォルダに置くことは望んでません。

というわけで、一部だけを同期したい場合こんな方法があるらしい。まだちゃんと試せていない。

参考記事のようにまっさらではない状態だけども(空コミットがある)有効化しておく。

cd path/to/directory
git config core.sparsecheckout true
cat .git/config

//出力
[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
        sparsecheckout = true

参考記事:

ローカルリポジトリを作成

作成と言ってもサーバーに作成したベアリポジトリをクローンしてくるんですが。

SSH設定ファイルが既にあるので、ローカルにクローンしてくるときはalias部分をHostに書き換えてクローンできる。

git clone alias:/home/ユーザーID/git/my-tegalog-skin.git

それではローカルで作業に入る…まえに。

developブランチ作成

とりあえずブランチでも切りましょう。

git checkout -b develop
git branch
* develop
  master

ローカルで変更を加える(develop上での作業)

今回はてがろぐスキンを作るぞ~という気持ちでやっているので、

  • skin-cover.html
  • skin-onelog.html

を中身は空っぽで作成します。touchコマンド使えると複数ファイルも一度に作成できちゃうんだなあ。

touch {skin-cover.html,skin-onelog.html}

次から実際にマークアップしたりなんだりしていきます。