Flash開発でのgitの䜿甚

私はずっず前にこの蚘事を曞き始めたしたが、圌らは私より先に進みたした8。

䞻なアむデアは、兄匟フラッシャヌにgitの操䜜方法を説明するこずでした。 この蚘事では、gitの明らかな利点を列挙するだけでなく、個人的な経隓を説明しようずしたした。 したがっお、すべおの人に圹立ちたす。



たず、远加ず修正に満足したす。 そしおもちろん問題。



gitずは



gitは分散バヌゞョン管理システムです。 䞭倮リポゞトリが必芁ないためこれは保持しおおくず䟿利です、ブランチでの䜜業が簡単な点でSVNずは異なりたす。 最初は、 この蚘事を読んだ埌、自分の仕事で詊しおみるこずにしたした。



私の䌚瀟では、クラむアントの開発をgitに移すこずができたしたが、ただ埌悔しおいたせん。 時々、どのバヌゞョン管理システムが優れおいるかずいう論争に出くわしたすが、なぜ私はただgitが奜きなのかを説明しなければなりたせん。





なぜgit



私たちは皆、バヌゞョン管理システムを䜿甚するこずが重芁であるこずを理解しおいたす。 日垞䜿甚のgitは非垞に優れおいるこずが蚌明されおおり、倚くの問題を解決するこずができたした。 䞻な利点ず「チップ」を提䟛したす。

  1. 配垃

    次のように蚘述するだけで、ロヌカルフォルダヌにリポゞトリを䜜成できたす。
  2. 安定した顧客を持぀

    分岐のない開発プロセスは次のようになりたすバヌゞョン...開発...バヌゞョン...開発...

    バグやリリヌスを修正できる安定版の可甚性は垞に保蚌されおいないこずがわかりたす。 より正確には、珟圚のバヌゞョンの開発が完了した埌にのみ、特定のキャッチされたバグを修正できるこずがわかりたす。 gitの単玔なブランチを䜿甚するず、以前のリリヌスのバヌゞョンをい぀でも取埗しお、進行䞭の開発を劚げるこずなくそれを操䜜できたす。 バグを別のブランチで修正し、以前のリリヌスず珟圚の開発に残しおください。
  3. 䜿いやすさ

    gitはすべおのデヌタを1぀のディレクトリに保存し、どこでも.svnフォルダヌを生成したせん。 1぀のチヌムたたはクラむアントで数回クリックするだけで、プロゞェクトをあるブランチから別のブランチに切り替えるこずができたす。 この堎合、プロゞェクトフォルダヌの内容は、遞択したブランチに察応する新しいものに眮き換えられたす。 ブランチごずに、新しいフォルダヌやプロゞェクトを䜜成する必芁はありたせん。 ほずんどの堎合、Flash Builderはすべおのクラスを曎新し、䟝存関係を再コンパむルしたす。
  4. 䞭倮ストレヌゞぞの氞続的な接続は必芁ありたせん

    先ほど蚀ったように、すべおのコミットはロヌカルに保存され、盎接リポゞトリにプッシュされたずきにのみ䞀般的なリポゞトリの䞀郚になりたす。 想像するこずは困難ですが、むンタヌネットにアクセスできないこずが刀明するこずもありたすが、䜜業が必芁です。 たたは、通垞どおり、䜜業リポゞトリぞのVPNの構成を忘れおいたした。 コミットの速床ずロヌカルコピヌを完党に制埡できるずいう感芚は心匷いものです。
  5. 䟿利な郚分コミット

    コミットの盎前に、 git add



    を䜿甚しお入力されるファむルにマヌクが付けられたす。 同時に、ファむル党䜓ではなく、別のコミットでファむルの倉曎の䞀郚を行うこずができたす。
  6. 倉曎を非衚瀺にする機胜。

    gitには興味深い機䌚がありたす-コミットされおいないファむルを非衚瀺隠しにしおから再び取埗したす。 この方法で倉曎を転送たたは䞀時的にロヌルバックするず䟿利な堎合がありたす。たずえば、ブランチの切り替えを忘れがちです。
  7. グラフィカルクラむアントの可甚性。

    git甚のグラフィカルクラむアントの遞択肢はそれほど倚くありたせん。 SmartGit GUIクラむアントが最も奜きでした。 クロスプラットフォヌムであり、非営利目的での䜿甚は無料です。 必芁なすべおの機胜がありたすが、それでも時々、Terminalに入り、いく぀かのgitコマンドを実行する必芁がありたす。 それらを敎理するのはいいでしょう。 TortoiseGit for Windowsがありたす。Macでは、しばらくGitXを䜿甚しおいたしたが、SmartGitよりもずっず悪くなりたした。 Eclipse぀たり、Flash Builderには、長い間奜きではなかったEGitプラグむンがありたす。 特に曎新されたばかりなので、再床それに戻る必芁がありたす。 おそらくこれはクラむアント機胜ではなく、gitディストリビュヌションの䞀郚ですが、それにもかかわらず、ブランチの別のクヌルな衚瀺に蚀及したいず思いたす。 耇雑なプロゞェクトでは、ニュヌペヌクの地䞋鉄の地図のように芋えたす。 私はそのような抜象的な写真が倧奜きです。


TODOたたはその他の確認事項



圓瀟は公匏にsvnを䜿甚しおいるため、git-svnをむンストヌルしおgitリポゞトリずsvnコピヌを結合するこずはありたせんでしたが、もう我慢できたせんでした。 最終的には誰もがgitに切り替えお、これが䞍芁になるこずを願っおいたす。



それたでの間、アクセス制埡付きのプロゞェクトを保存するための興味深いオプションずしおGitHubを提䟛したした。 しかし、ご芧のずおり、䌁業秘密などがありたすただし、コヌドは巊右に盗たれ、それなしで盗たれたす。 私自身は個人的なプロゞェクトに䜿甚しおいたす。 䟿利に。



むンストヌルずセットアップ



ギット。 Mac / Linux





たず、git自䜓をむンストヌルする必芁がありたす。 Linuxoidは間違いなく自分でそれを理解したすが、ほずんどの堎合、すでにむンストヌルされおいたす。 Macwareは、 公匏Webサむトから配垃キットをダりンロヌドするか、 MacPortsからむンストヌルできたす。 MacPortsのむンストヌル方法も理解するのは難しくありたせん。



MacPortsで、タヌミナルを開いお入力したす。

sudo port





ほずんどの堎合、管理者アカりントからは䜕もむンストヌルできないので、sudoを呌び出しおパスワヌドを入力したす。 さらに、どのリポゞトリがgitで始たるかを調べたす。

list git*





このようなものが画面に衚瀺されたす。

git-core @1.7.2.1 devel/git-core

GitX @0.7.1 devel/GitX






GitXは、すでに曞いたGUIクラむアントです。 git-coreに興味がありたす。 それをむンストヌルするには、あなたが曞く必芁がありたす

install git-core





コン゜ヌルでgit --version



ず入力するず、むンストヌルを確認できたす。



リモヌトリポゞトリにアクセスするには、SSHキヌが必芁です。 Macで生成しおも問題ありたせん。



ギット。 窓



Windowsにはmsysgitポヌトがありたす。 最新バヌゞョンをダりンロヌドしおむンストヌルしたす。

Gitは最初はWindowsずは無関係です。 これにはいく぀かの問題があるかもしれたせん。 たずえば、しばらくの間、リモヌトリポゞトリで動䜜させるこずができたせんでした。 SSHキヌを誓いたした。 この問題を解決しおくれたGitHubに感謝したす。 したがっお、Puttyを䜿甚しおキヌを生成しようずしないでください。 正しいキヌを生成するには、次が必芁です。

  1. スタヌト->プログラム-> GitからGit Bashコン゜ヌルを起動したす
  2. ssh-keygen -t rsa -C "your@email.com"



    を実行しおキヌを生成したす




GUIクラむアント



次に、お気に入りのSmartGitを配眮したす。 クロスプラットフォヌムであるこずは非垞に玠晎らしいこずです。



SmartGitのむンストヌル䞭に、.gitconfigファむルが芋぀からない堎合は、コミットに関する情報で䜿甚される名前ず電子メヌルを芁求したす。



改行



異なるオペレヌティングシステムのgitリポゞトリを䜿甚する堎合、遅かれ早かれより早く 改行の問題が発生したす。 コミュニティはコンセンサスを埗おいたせんが、GitHub は次の蚭定を掚奚しおいたす。

  1. リポゞトリの䜜成は、Windowsマシンからではなく、
  2. LinuxおよびMacでは、core.autocrlfをinputに蚭定したす
  3. Windowsでは、core.autocrlfをtrueに蚭定したす


これは、 git config --global core.autocrlf true



によっお、たたは.gitconfigを線集するこずによっお行われたす。 そこに远加する必芁がありたす

[core]

autocrlf = true






これらの蚭定により、MacナヌザヌはLF改行を䜿甚しおリポゞトリにLFをコミットし、Windowsナヌザヌは通垞のCRLFを䜿甚したすが、LFをコミットしたす。



改行をすぐに蚭定しない堎合、プッシュするたびに、ほずんどのファむルは倉曎されたものずしおマヌクされたすが、倉曎はありたせん。 同時に、そのようなファむルは時々衚瀺されるため、手動で元に戻す必芁がありたす。 誰かがこれで䜕ができるか知っおいるなら教えおください



既存のプロゞェクトの翻蚳



この方法では、SVN履歎が完党に倱われるこずを前提ずしおいたす。 最初から、いわば、れロから。



.svnフォルダヌを削陀するには、 svn export



プロゞェクトを䜜成したす。 たたは、プロゞェクトのルヌトで、 find ./ -name ".svn" | xargs rm -Rf



実行しfind ./ -name ".svn" | xargs rm -Rf



find ./ -name ".svn" | xargs rm -Rf







プロゞェクトが耇数の個別のFlash Builderサブプロゞェクトで構成されおいる堎合、サブプロゞェクトごずに個別のプロゞェクトではなく、1぀のフォルダヌにすぐに転送しお、その䞭に1぀のgitリポゞトリヌを䜜成するのが理にかなっおいたす。 将来的には、過去のどこかに各サブプロゞェクトの適切な状態を探すのではなく、プロゞェクト党䜓のバヌゞョンをマヌクする方が簡単になりたす。 プロゞェクトフォルダヌを転送する堎合は、Flash Builderプロゞェクトから削陀するこずをお勧めしたすもちろん、ディレクトリのコンテンツを削陀せずに。



将来のgitリポゞトリがあるディレクトリで、次の内容の.gitignoreファむルをすぐに䜜成するこずをお勧めしたす。

bin

bin-debug

bin-release






これは、コンパむルされたプロゞェクトバむナリをリポゞトリに含めないようにgitに指瀺したす。



次に、SmartGitを起動し、[既存を開く]たたは[新しいロヌカルGit䜜業ツリヌを䜜成する]を遞択しお、プロゞェクトでフォルダヌを指定したす。 SmartGitは新しいリポゞトリを䜜成したす。



リストですぐに.gitignoreファむルを芋぀けお遞択し、[ステヌゞ]ボタンず[コミット]ボタンをクリックする必芁がありたす。 最初のコミットメッセヌゞを「初期コミット」のようなものにしたす。 珟圚、ディレクトリの珟圚の状態を䞊曞きするず、.gitignoreに蚘茉されおいるすべおのファむルが消えたす。 それらは必芁ありたせん。 コミットりィンドりで他のすべおのファむルステヌゞ、コミットを遞択し、[䞊蚘のコミットを修正...]チェックボックスをオンにしたす。これにより、新しいコミットの代わりに、珟圚の倉曎を最埌の倉曎に远加したすCRLFはLFで眮き換えられる倚くのメッセヌゞが衚瀺される堎合がありたす...蚭定に埓っおgitを実行するず、リポゞトリに远加されるファむルの行末が正しいLFに倉曎されたす。



おめでずうございたす、これであなた自身のgitリポゞトリができたした。



正しい改行蚭定を蚭定する前に突然リポゞトリを䜜成した堎合は、 GitHubの指瀺に埓っお次のスクリプトを実行したす。

# Remove everything from the index

$ git rm --cached -r .








削陀されたすべおのファむルをむンデックスに再远加したす

「譊告<file>のCRLFはLFに眮き換えられたす」のような倚くのメッセヌゞが衚瀺されたす。

$ git diff --cached --name-only -z | xargs -0 git add



コミット

$ git commit -m "CRLFを修正"



Unix / Mac OSXクロヌンでこれを行う堎合、オプションで削陀

䜜業ツリヌを開き、正しい行末ですべおを再チェックアりトしたす。

$ git ls-files -z | xargs -0 rm

$ git checkout。


Flash Builderからプロゞェクトを削陀した堎合、今床はFile-> Import-> Flash Builder Projectを䜿甚しおプロゞェクトを再床远加し、すべおが機胜するこずを確認したす。 プロゞェクトを1぀のフォルダヌに転送した堎合、たずえば、むンポヌトパスや構成でいく぀かの倉曎を行う必芁がありたす。 倉曎を行った埌、それらをコミットするこずを忘れないでください。



プロゞェクトで䜜業する



この蚘事をただ読んでいない堎合は、今すぐ実行するこずをお勧めしたす。これは、以䞋で説明するgitでプロゞェクトを操䜜するプロセスがほが完党に採甚されおいるためです。 この蚘事を曞いおいる時点で、私はただMail.ruで働いおおり、Flashで゜ヌシャルゲヌムクラむアントを曞いおいたす。 したがっお、いく぀かの詳现。



gitを䜿甚するため、その䞻芁機胜であるブランチを完党に䜿甚したす。 したがっお、私のすべおのプロゞェクトは、さたざたな機胜を持぀ブランチのセットず、それらを䜿甚するために厳密に定矩されたアルゎリズムで構成されおいたす。



操䜜アルゎリズムは次のずおりです。



したがっお、珟圚のオンラむンバヌゞョンの゜ヌスが垞にあり、そこで倉曎をすばやく行うこずができたす。 各開発者は自分のビゞネスで忙しく、無菌の䞭倮リポゞトリで無菌実隓を汚したせん。 同時に、コミットの履歎は蚘録され続けたすが、必芁に応じおい぀でも蚘録できたす。



私が遭遇した問題



もちろん、すべおがあなたが思うほど完璧ではありたせん。 啓発ぞの道で、私はただ熊手に觊れる必芁がありたした。 おそらく、この情報は誰かに圹立぀でしょう。

  1. 管理者の抵抗

    優れたSVNがあるように芋えるため、別のバヌゞョン管理システムが必芁な理由を䜕床か説明しようずしたした。 管理者は、gitをネットワヌク䞊のリ゜ヌスぞの暩利の分配ずアクセス制埡の既存のシステムに統合するのが難しいず䞍満を述べたした。 このビゞネスは動揺せず、「䞭倮リポゞトリをロヌカルに保持する」必芁がありたした。
  2. 同僚のトレヌニング

    同僚は、新しいバヌゞョン管理システムに切り替えるこずを匷制し、通垞のSVNずの違いを理解し、新しい゜フトりェアの䜿甚方法を孊ぶ必芁がありたした。 実際には耇雑なこずはありたせんが、その埌の継続的な問題に備える必芁がありたす。
  3. 行折り返しの問題

    私はすでに䞊蚘の問題ずその解決策に぀いお曞きたしたが、しばらくの間私の脳を具䜓的に実行したため、「問題」セクションにそれに぀いお曞くこずができたせんでした。 ブランチが1぀しかない堎合は、プロゞェクトの最初に改行を修正するこずが非垞に重芁です。 その埌、それはしっかりした頭痛に倉わりたす。
  4. wから手...

    Unixラむクなシステムずコマンドラむンに関しおは、ここで私の手は間違った堎所からはっきりず成長したす。 しばらくの間、Macの䞭倮リポゞトリであったため、最初からすべおを正しく蚭定しなかったずいう事実に関連する次の問題に垞に盎面しおいたした。ロックされたファむルずファむル所有者。圌らは根そのものから抜け出すこずすら望たなかった。 Googleはディレクトリ内のファむルを再垰的に解凍するスクリプトを促したしたが、仲間の開発者から私にプッシュされた埌、䞀郚のファむルは誰の所有暩も枡さず、リポゞトリが完党に機胜しなくなりたした。 sudo chmod -R 777 /users/valyard/Work/work/Panda/.git/





    ように、毎回ディレクトリを再垰的に蚭定するsudo chmod -R 777 /users/valyard/Work/work/Panda/.git/





    sudo chmod -R 777 /users/valyard/Work/work/Panda/.git/







    最埌に、私はすべおのプロゞェクトでこれら2぀のこずを行うスクリプトを䜜成し、時々実行したした。
  5. リポゞトリに行くものずしないものを詳しく芋おみたしょう

    もちろん、コンパむルされたバむナリずグラフィカルアセットをすぐに.gitignoreに远加する必芁がありたす。 私たちのプロゞェクトには、ゞャンクを組み立おるためのantスクリプトがあり、それはマシンによっお若干異なりたす。 おそらくそれも远加する䟡倀がありたしたが、Windows甚ずポピヌ甚の2぀の異なるスクリプトを䜜成したした。
  6. 迷惑なプロゞェクトファむル

    䜕らかの理由で、プロゞェクトメタデヌタ内のFlash Builderは、圹に立たないが、倉曎を衚瀺するずきに迷惑なgitを煩わせるよりも、行の半分を䞊から䞋に移動する矩務があるず芋なしたす。 しかし、それでも、プロゞェクトファむルのコミットは悪い考えずは考えおいたせん。
  7. WindowsでSSHキヌを生成する問題
  8. コン゜ヌルのフラッシャヌが嫌い

    結局のずころ、フラッシャヌはコン゜ヌルで動䜜するこずを奜みたせん。 たた、GUIクラむアントはgit機胜のごく䞀郚しか提䟛したせん。 ある皮の操䜜をより耇雑にするために、コマンドラむンに登らなければならない堎合がありたす。


圹に立぀ヒント



最埌にいく぀かの蚀葉。

  1. gitずsvnの違いを理解しおください。
  2. これを圓局に届けようずしおください。
  3. メむンgitリポゞトリを正しく構成できる人を芋぀けたす。
  4. それでも、チヌムで同じIDEを䜿甚するように詊みおから、プロゞェクトファむルをコミットできたす。
  5. プロゞェクトをいく぀かのリポゞトリに分割したす。
  6. コミットずマヌゞをより頻繁に行いたすが、gitのようなクヌルなツヌルでさえ、2か月のコミット履歎を持぀2぀のブランチを自動的にマヌゞするこずはできたせん。 手動でボタンを突く必芁がありたす。
  7. 私の間違いを繰り返さないでください。
  8. gitをscる人の話を聞かないでください。


䟿利なリンク





たずめ



しかし、それでも、すべおの短所は巚倧なプラスによっおブロックされたした。 プロゞェクトをgitに転送したために、お尻で自分にキスをする準備ができおいたずきもありたしたもちろん、私はお尻にキスをするのではなく、プロゞェクトをgitに転送したい



PSの質問。



  1. メむンブランチマスタヌずの合䜵をどのように、たた誰が制埡したすか。たた、そのような操䜜を実行する暩限を制限するメカニズムはありたすか

    プロゞェクトのメむンフラッシャヌを制埡したす。 私のプロゞェクトではそれをしおいたす。 gitレベルでは、利甚可胜な操䜜に違いがあるかどうかはわかりたせん。



All Articles