Ankündigung

Einklappen
Keine Ankündigung bisher.

Git - Verschachtelte Projekte aus verschiedenen Quellen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Git - Verschachtelte Projekte aus verschiedenen Quellen

    hi,

    ich habe folgendes vor.

    Projekt A soll Teil von Projekt C sind, späther könnte sogar noch Projekt B hinzukommen.
    Wie stelle ich es an, dass ich mein eigenes Projekt A in einem Unterordner von C auschecke?
    Meine Frage steht im Kontext zu GitHub.

    Die Projekte A,B,C sollen dann Wahlweise geupdatet bzw eingecheckt werden können.

    Ich hab biser nur primitiv einzelne Projekte ein uns ausgecheckt.



    bitcoin.de <- Meine Freelancerwährung

  • #2
    Dafür gibt es Submodules:
    https://git-scm.com/book/en/v2/Git-Tools-Submodules

    Kommentar


    • #3
      Oder die Projekte über Composer installieren, vorausgesetzt die pakete sind bei packagist eingetragen.

      Wie das Funktioniert, habe ich in diesem VIdeo erklärt

      https://youtu.be/W6wocjQfs6k?t=298

      apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

      Kommentar


      • #4
        Zitat von BlackScorp Beitrag anzeigen
        Oder die Projekte über Composer installieren, vorausgesetzt die pakete sind bei packagist eingetragen.

        Wie das Funktioniert, habe ich in diesem VIdeo erklärt

        https://youtu.be/W6wocjQfs6k?t=298

        Da mach ich mich wieder von einem alles beherrschenden dienst abhängig. oder kann ich packagist privat betreiben?
        bitcoin.de <- Meine Freelancerwährung

        Kommentar


        • #5
          Zitat von BlackScorp Beitrag anzeigen
          Oder die Projekte über Composer installieren, vorausgesetzt die pakete sind bei packagist eingetragen.
          man kann doch im Composer alle möglchen Arten von Repos angeben, auch nur urls soweit ich das verstanden habe.

          Kommentar


          • #6
            Zitat von tomBuilder Beitrag anzeigen

            man kann doch im Composer alle möglchen Arten von Repos angeben, auch nur urls soweit ich das verstanden habe.
            Jup das geht ohne Probleme https://getcomposer.org/doc/02-libra...shing-to-a-vcs

            Kommentar


            • #7
              Zitat von Alpha Beitrag anzeigen

              Da mach ich mich wieder von einem alles beherrschenden dienst abhängig. oder kann ich packagist privat betreiben?
              ja, du kannst da natürlich eigene Repos und CSV usw eintragen, packagist ist der einfachste Weg
              apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

              Kommentar


              • #8
                Zitat von tomBuilder Beitrag anzeigen

                man kann doch im Composer alle möglchen Arten von Repos angeben, auch nur urls soweit ich das verstanden habe.
                Ich geb zu, ich versteh Composer als Entwickler noch nicht. Ich dreh mich mit meiner Organisation der Projekte etwas im Kreis. Ich such mal nach Tutorials bei YT oder so. Ich muss das mal praktisch sehen.
                bitcoin.de <- Meine Freelancerwährung

                Kommentar


                • #9
                  Zitat von Alpha Beitrag anzeigen

                  Ich geb zu, ich versteh Composer als Entwickler noch nicht. Ich dreh mich mit meiner Organisation der Projekte etwas im Kreis. Ich such mal nach Tutorials bei YT oder so. Ich muss das mal praktisch sehen.
                  Das kannst du in etwa vergleichen der der Appstore auf deinem Smartphone, du gehst drauf, suchst nach einer App und klickst auf installieren. Der Appstore überprüft ob du die richtige Android/IOS Version hast ob alle notwendige Pakete dazu installiert sind und wenn ja wird das dann heruntergeladen.

                  Das gleiche passiert in Composer, jeder kann ein Package definerein und sagen, damit mein Script funktioniert, brauchst du php version >=7.1 UND du brauchst zb die extension mysql UND du brauchst noch das Framework Symfony ab version 3. Composer schaut dann nach ob dein System die Anforderungen erfüllen. bei Frameworks/Libraries die installiert er dir aber nach wenn die nicht vorhanden sind. Alles wird schön zusammen in den Vendor Ordner heruntergeladen. Und Composer schaut dann auch bei Symfony nach welche Libraries das braucht um zu laufen und das geschieht dann rekursiv. Auch wird geschaut ob da nicht irgendwelche Konflikte geben kann und du wirst dann gewarnt.


                  Auf jeden Fall sorgt composer dafür, dass du alle pakete richtig installiert sind, es muss nicht immer die neueste Version sein weil du kannst auch sagen bitte symfony NUR 3er installieren aber nicht höher als 3. Die Quellen woher Composer nachschaut, befindet sich entweder auf packagist oder du kannst lokale quellen definieren.

                  bei packagist kannst du selbst dein Repo eintragen, originaler Quellcode ist auf Github/Bitbucket und du hast einfach nur den Link zum repo bei packagist eingetragen. Lokal kannst du sogar SVN benutzen oder ZIP Download, da musst du aber sicherstellen dass du in SVN mit Tags arbeitest für Versionsnummern oder du vergibst Aliasnamen für deine Versionsnummern. Also ich erwähne das weil viele bei SVN keine symantische Versionierung machen.


                  apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

                  Kommentar


                  • #10
                    Die Schwierigkeiten, die ich habe sind, wie ich meine Dateien , Repos und meinetwegen den Composer organisieren muss, wenn ich 3 Projekte habe, von denen 2 in dem anderen 3. stecken. Das gleiche Problem hab ich mit den Namespaces. Ich will grundsätzlich keinerlei fremde Projekte nutzen, keine Dienste wie packagist. Ich möchte stupide erstmal einen workfloh hinbekommen, wo ich weiss, wie ich meine ordner pro projekt organisiere, wie meine composer (json) aussehen muss ( das versteh ich am wenigsten was da überhaupt und warum rein muss ) und wie ich das dann in der Versionskontrolle verwende. also hier updaten und da einchecken ect.
                    hab schon 5 mal die wissenssammlung zu composer gelesen, aber rein praktisch versteh ich das nicht. das ist glaube alles nur für leute, die nicht alles coden und sich fertige frameworks laden aber ich entwickle ja selber.
                    bitcoin.de <- Meine Freelancerwährung

                    Kommentar


                    • #11
                      Zitat von Alpha Beitrag anzeigen
                      das ist glaube alles nur für leute, die nicht alles coden und sich fertige frameworks laden aber ich entwickle ja selber.
                      Das stimmt nicht.

                      du kannst in jedem deiner Projekte eine composer.json anlegen die etwa so aussieht


                      Code:
                      {
                      "name": "alpha/project1",
                      "require":{
                      "php": ">=7.1"
                      }
                      }


                      Code:
                      {
                      "name": "alpha/project2",
                      "require":{
                      "php": ">=7.1"
                      }
                      }
                      also hast NUR namen angegeben und das require ist halt optional

                      in project3 hast du dann folgendes:


                      Code:
                      {
                      "name": "alpha/project3",
                      "require":{
                      "php": ">=7.1",
                      "alpha/project1":"dev-master",
                      "alpha/project2":"dev-master"
                      },
                       "repositories": [
                              {
                                  "type": "vcs",
                                  "url": "https://github.com/aplha/project1"
                              },
                          {
                                  "type": "vcs",
                                  "url": "https://github.com/aplha/project2"
                              },
                          ],
                      }
                      die Repositories kannst du halt noch detalierter konfigurieren hier ist die Dokumentation https://getcomposer.org/doc/05-repositories.md

                      composer wird also deine projekte in dem Vendor Ordner ausrollen. wenn allerdings was an project2 veränderst, musst du es in project2 machen und den code einchecken und dann project3 updaten. Wenn du direkt in project3 was veränderst, wird dein Code dann nach dem update verworfen.

                      apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

                      Kommentar


                      • #12
                        Das mit den Vendor-Ordner ist auch so ein Aspekt, den ich nicht verstehe. Mal angenommen ich hab ein projekt A, das nutze ich dann später in Projekt B. also hab ich dem anschein nach einen vedor ordner mit dem fremden A-Projekt und einen ordner daneben mit B-Projekt. Jetzt mach ich aus beiden ein gesamtprojekt und verwende es in C. Jetzt ist meine Ordnerstruktur komisch, denn ich hab vendor in vendor und daneben C-Projekt. Mal abgesehen vom Chaos mit dem Classloader jedes Projektes.
                        bitcoin.de <- Meine Freelancerwährung

                        Kommentar


                        • #13
                          Zitat von Alpha Beitrag anzeigen
                          Das mit den Vendor-Ordner ist auch so ein Aspekt, den ich nicht verstehe. Mal angenommen ich hab ein projekt A, das nutze ich dann später in Projekt B. also hab ich dem anschein nach einen vedor ordner mit dem fremden A-Projekt und einen ordner daneben mit B-Projekt. Jetzt mach ich aus beiden ein gesamtprojekt und verwende es in C. Jetzt ist meine Ordnerstruktur komisch, denn ich hab vendor in vendor und daneben C-Projekt. Mal abgesehen vom Chaos mit dem Classloader jedes Projektes.
                          nene, du hast kein vendor im vendor, composer schaut alle abhängigkeiten nach innen hinein und installiert diese in der höchsten ebene. du hast also nur ein vendor Ordner und die projekte die da drin liegen beziehen sich auf eine ebene über dem projekt

                          bezüglich classloader, wenn du dich an den Standard, PSR-0 oder PSR-4 hälst, kannst du den auch in composer.json files pro projekt definieren und bruachst deinen eigenen Autoloader nicht

                          probier es doch mal aus

                          hier siehst du dass du zb deine Projekte lokal definieren kannst über Pfade relativ zum Projekt
                          https://getcomposer.org/doc/05-repositories.md#path
                          apt-get install npm -> npm install -g bower -> bower install <package> YOLO [URL]https://www.paypal.me/BlackScorp[/URL] | Mein Youtube PHP Kanal: [url]https://www.youtube.com/c/VitalijMik[/url]

                          Kommentar


                          • #14
                            Zitat von Alpha Beitrag anzeigen
                            das ist glaube alles nur für leute, die nicht alles coden und sich fertige frameworks laden aber ich entwickle ja selber.
                            Composer verwaltet die Abhängigkeiten deines Projekts, völlig egal ob "selbst entwickelt", Library, Framework, Tool, Applikation, (..). Dabei können Abhängigkeiten auch verschachtelt sein: Projekt A braucht Library B braucht Library C braucht (..). Aber probier es doch einfach mal aus und schau dir das Ergebnis an. Deine Vorstellungen von Composer haben wenig mit der Realität zu tun.
                            [SIZE="1"]Atwood's Law: any application that can be written in JavaScript, will eventually be written in JavaScript.[/SIZE]

                            Kommentar

                            Lädt...
                            X