単一開発者のGITワークフロー(単純なFTPから移行)


11

VCSに移行するのが賢明かどうかを判断しようとしています。私は小さな組織(5人)の単一のWeb開発者です。VCS(Git)は、バージョン管理、オフサイトバックアップ、集中コードリポジトリ(自宅からアクセス可能)などの理由で考えています。

現時点では、一般的にライブサーバーで作業しています。FTPで入力し、編集して保存し、再アップロードして更新します。通常、編集はCMSのテーマ/プラグインファイル(concrete5またはWordpressなど)に対して行われます。これはうまく機能しますが、バックアップもバージョン管理も提供しません。

VCSをこの手順にどのように統合するのが最善か疑問に思っています。会社のWebサーバーにGitサーバーをセットアップすることを想定していますが、クライアントアカウント(通常は同じサーバー上のVPS)に変更をプッシュする方法は明確ではありません-現時点では、詳細を指定してSFTPにログインし、変更を直接。

また、何がリポジトリを賢明に表現するのか分かりません-各クライアントのウェブサイトは独自のものを取得しますか?

洞察や経験は本当に役立つでしょう。どうしてもGitのフルパワーが必要だとは思いませんが、基本的なバージョン管理と事実上のクラウドアクセスは本当に便利です。

編集:私はそれを最も理にかなっていると思われる2つのオプションに絞り込みました。1つ目はZweiBlumenの回答に基づいており、編集はライブサーバーで行われ、そこから(外部の)Gitサーバーにコミットされます。これには、私のワークフローがあまり変わらないという利点があります(コミットを行うための追加のステップがありますが、それ以外は同じです)。

2番目のオプションは、XAMPPを使用してローカルで作業し、ローカルマシンから変更をコミットすることです。サイトがライブになったときのみ、完成した記事をローカルマシンからWebサーバーにアップロードします(Gitへの最終コミットの直後)。これは理論上は問題ないように見えますが、その後サイトが修正を必要とし、ライブサーバーでそれらを作成する場合(通常どおり)、ローカルリポジトリの変更されたファイルを手動でコピーし、それらの変更をGitサーバー。これは過度に複雑に思えますが、おそらく私の現在のワークフローからはかけ離れすぎています。

私は、オプション1を試してみて、どうやってうまくいくかをバランスよく考えます。


1
git(または他の分散VCS)について覚えておくべきことは、すべてのリポジトリが少なくとも技術的にはピアであるということです。ローカルリポジトリは、ライブサーバーまたはバックアップリポジトリと同じように「本物」です。構造を与えるのはワークフローポリシーですしたがって、実際にライブサーバーで主要な作業を続けたい場合は、次のことができます。
comingstorm

おかげで、それは知っておくと良いことです。Gitの固有の柔軟性により、「ベストプラクティス」の出発点を見つけるのが難しくなります。これは、経験豊富なユーザーのPOVの強みですが、初心者の弱点は間違いありません。
melat0nin

回答:


3

私が行うことは(Subversionで、Gitでも動作します)すべてを1つのSubversionリポジトリにコミットしますが、必要に応じてプロジェクト、ブランチ、タグに明らかに分割します。次に、これらのリポジトリをライブサーバーにチェックアウトします。したがって、開発マシンで変更を行ってリポジトリにコミットすると、多くの場合、ライブサーバー上でチェックアウトされたコピーを更新して変更を有効にします。追加のボーナスは、ライブサーバーで簡単な修正を行う必要がある場合、サーバーからリポジトリにコミットし、開発マシンで作業コピーを更新することです。

これを管理する方法は他にもあると思いますが、これは非常に簡単で、あなたとまったく同じ状況にいます。小さな組織(4人)の単一の開発者です。


1
お返事をありがとうございます!それは、スナップショットをローカルマシンにプルし、変更を加えてコミットし、ライブサーバーからプルリクエストを行う(SSHで)ことを意味しますか?変更が本当に小さい場合はどうなりますか?開発用にローカルWebサーバーを実行していますか?(単純なCSSの変更のためにこのプロセスを実行できませんでした。.夢中になります!)
melat0nin

1
小さなCSSの変更については、サーバー上で直接変更を行い、その変更をサーバーからリポジトリにコミットします。サイトでより深刻な作業を行う必要がある場合、リポジトリからサイトの最新バージョンで開発マシンのサイトを更新します。リポジトリにコミットする限り、変更を行う場所(サーバーまたは開発マシン)は実際には問題ではないと思います。
ツヴァイブルーメン

それでは、これにどのツールを使用しますか?FTPを使用してサーバーでファイルを直接変更し、バックグラウンドでSSHセッションを開いてGitサーバーへのコミットを何度も繰り返しますか?
melat0nin

1
はい、それは基本的にそれです。実際、Subversionを使用しています。Linuxサーバーだけでなく、Windowsにもサイトがあります。Windowsでは、リモートデスクトップ上でCSSを変更し、TortoiseSVNを使用してコミットします。Linuxでは、SSHセッションとvimを使用して変更を加えます(ただし、変更をFTPで送信することもできます)。
ツヴァイブルーメン

サーバーで編集し、そこからSSH経由でコミットするというあなたの提案に行きました。これは数日前から行っています。本当にうまくいくようです、ありがとう!
melat0nin

2

特定のブランチにプッシュすると、Webサーバーのデータディレクトリを自動的に更新する(セキュリティ上の理由からエクスポートが推奨されます)post-updateフックを作成するのはかなり簡単git archiveです。

そのため、このようなフックを使用してgitリポジトリをどこかに設定します(セキュリティ上の理由から、Webとは別のサーバーに配置します)。もちろん、大きな変更をテストするには、テストサーバーが必要になります。これは、ローカルマシン上で実行するか、別のブランチにプッシュして更新することができます。どちらの場合でも、コミットとプッシュを行うだけで、つまらないスペルとCSSの修正のためにこれをバイパスできます。


1

次の手順に従います。

  1. リモートプッシュ/プル用の適切な公開/秘密キーペアを使用してリモートサーバーをセットアップする
  2. 2つのブランチのテストとリリースをセットアップする
  3. テストブランチのテスト環境でローカルに開発する
  4. リリースブランチとマージして、リモートサーバーにプッシュしたい場合
  5. リモートサーバーをフックして、リリースの最新バージョンに更新する

Webサイトごとに1つのリポジトリを設定し、それらが互いに混雑しないようにします。個別のブランチを使用すると、現在の「良好な」バージョンロックが現在作業中の機能にステップすることを回避できます。これは機能する場合と機能しない場合があります。


だから、私は正しく理解しています-Git用の2つのサーバー(1)、ライブWebサーバー、および1つのローカル開発マシンがあります。開発はローカルで行われ、ライブサーバーを更新するためのフックがあるGitサーバーにプッシュされますか?
melat0nin

@ melat0ninそれが一つの方法です。ライブサーバーにgitサーバーからcronジョブとしてプルさせることもできます。または、2台のマシンを使用できます。ローカル開発マシン、および実稼働のWebサーバー。このようにして、開発マシンから本番マシンにリポジトリをプッシュすると、プッシュするたびに最新のリリースブランチに更新されます。
スペンサーラスブン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.