Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
64 changes: 32 additions & 32 deletions book/07-git-tools/sections/submodules.asc
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[[_git_submodules]]
=== Submodules
=== Submoduly

Často se stává, že pracujete na jednom projektu, ale na chvíli si potřebujete odskočit do jiného.
Jedná se třeba o knihovnu, kterou vyvinula třetí strana, nebo kterou vyvíjíte odděleně a používáte ji v několika nadřazených projektech.
Expand All @@ -17,13 +17,13 @@ Submoduly umožňují uchovávat repozitář Git jako podadresář jiného repoz
Do svého projektu tak můžete naklonovat jiný repozitář a uchovávat revize oddělené.

[[_starting_submodules]]
==== Starting with Submodules
==== Začínáme se submoduly

We'll walk through developing a simple project that has been split up into a main project and a few sub-projects.
Projdeme si vývoj jednoduchého projektu, který byl rozdělen na hlavní projekt a několik podprojektů.

Let's start by adding an existing Git repository as a submodule of the repository that we're working on.
To add a new submodule you use the `git submodule add` command with the absolute or relative URL of the project you would like to start tracking.
In this example, we'll add a library called ``DbConnector''.
Začněme přidánám stávajícího repozitáře Git jako submodulu repozitáře, na němž pracujeme.
K přidání nového submodulu se použivá příkaz `git submodule add` s uvedením absolutního nebo relativního URL projektu, který byste rádi začali sledovat.
V tomto příkladu přidáme knihovnu s názvem ``DbConnector''.

[source,console]
----
Expand All @@ -36,10 +36,10 @@ Unpacking objects: 100% (11/11), done.
Checking connectivity... done.
----

By default, submodules will add the subproject into a directory named the same as the repository, in this case ``DbConnector''.
You can add a different path at the end of the command if you want it to go elsewhere.
Submoduly budou implicitně přidány jako podprojekty v podadresáři se stejným názvem jako má původní repozitář, v tomto případě ``DbConnector''.
Pokud jej chcete uložit jinam, můžete zadat na konec příkazu jinou cestu.

If you run `git status` at this point, you'll notice a few things.
Pokud v tuto chvíli spustíte `git status`, objevíte několik věcí.

[source,console]
----
Expand All @@ -54,7 +54,7 @@ Changes to be committed:
new file: DbConnector
----

First you should notice the new `.gitmodules` file.
Nejprve si všimněte nového souboru `.gitmodules`.
Jedná se o konfigurační soubor, v němž je uloženo mapování mezi adresou URL projektu a lokálním podadresářem, do nějž jste stáhli repozitář.

[source,ini]
Expand All @@ -69,15 +69,15 @@ Za zmínku stojí, že je tento soubor verzován spolu s ostatními soubory, pod
Soubor se odesílá a stahuje se zbytkem projektu.
Ostatní uživatelé, kteří budou tento projekt klonovat, díky tomu zjistí, kde najdou projekty submodulů.

[NOTE]
[Poznámka]
=====
Since the URL in the .gitmodules file is what other people will first try to clone/fetch from, make sure to use a URL that they can access if possible.
Jelikož je URL v souboru .gitmodules to, které budou ostatní lidé zkoušet klonovat jako první, ujistěte se, že používáte URL, které bude dostupné i pro ně.
For example, if you use a different URL to push to than others would to pull from, use the one that others have access to.
You can overwrite this value locally with `git config submodule.DbConnector.url PRIVATE_URL` for your own use.
When applicable, a relative URL can be helpful.
=====

The other listing in the `git status` output is the project folder entry.
Další věcí ve výstupu `git status` je položka adresáře projektu.
Pokud na ni použijete příkaz `git diff`, uvidíte zajímavou věc:

[source,console]
Expand All @@ -92,10 +92,10 @@ index 0000000..c3f01dc
+Subproject commit c3f01dc8862123d317dd46284b05b6892c7b29bc
----

Although `DbConnector` is a subdirectory in your working directory, Git sees it as a submodule and doesn’t track its contents when you’re not in that directory.
Instead, Git sees it as a particular commit from that repository.
I když je `DbConnector` podadresářem vašeho pracovního adresáře, Git jej vidí jako submodul a nesleduje jeho obsah, pokud nejste v tomto adresáři.
Git jej místo toho vidí jako konkrétní commit z tohoto repozitáře.

If you want a little nicer diff output, you can pass the `--submodule` option to `git diff`.
Pokud budete chtít o něco hezčí výstup diffu, můžete použít volbu `--submodule` pro `git diff`.

[source,console]
----
Expand Down Expand Up @@ -123,14 +123,14 @@ $ git commit -am 'added DbConnector module'
create mode 160000 DbConnector
----

Notice the `160000` mode for the `DbConnector` entry.
Všimněte si režimu `160000` položky `DbConnector`.
Jedná se o speciální režim systému Git, který udává, že revizi zaznamenáváte jako adresář, ne jako podadresář nebo soubor.

[[_cloning_submodules]]
==== Cloning a Project with Submodules
==== Klonování projektu se submoduly

Here we’ll clone a project with a submodule in it.
When you clone such a project, by default you get the directories that contain submodules, but none of the files within them yet:
Budeme nyní klonovat projekt obsahující submodul.
Když klonujete takový projekt, vytvoří se adresáře pro submoduly, ale nebudou v nich žádné soubory:

[source,console]
----
Expand Down Expand Up @@ -158,7 +158,7 @@ $ ls
$
----

The `DbConnector` directory is there, but empty.
Adresář `DbConnector` existuje, ale je prázdný.
Budete muset použít dva příkazy: `git submodule init` k inicializaci lokálního konfiguračního souboru a `git submodule update` k vyzvednutí všech dat z tohoto projektu a checkoutu příslušné revize uvedené ve vašem superprojektu:

[source,console]
Expand All @@ -175,10 +175,10 @@ Checking connectivity... done.
Submodule path 'DbConnector': checked out 'c3f01dc8862123d317dd46284b05b6892c7b29bc'
----

Now your `DbConnector` subdirectory is at the exact state it was in when you committed earlier.
Nyní je podadresář `DbConnector` ve stejném stavu, v jakém jste jej commitovali dříve.

There is another way to do this which is a little simpler, however.
If you pass `--recursive` to the `git clone` command, it will automatically initialize and update each submodule in the repository.
Samozřejmě existuje způsob, jak to udělat o něco jednodušeji.
Pokud použijete volbu `--recursive` v příkazu `git clone`, automaticky zinicializuje a zaktualizuje každý submodul v repozitáři.

[source,console]
----
Expand All @@ -199,16 +199,16 @@ Checking connectivity... done.
Submodule path 'DbConnector': checked out 'c3f01dc8862123d317dd46284b05b6892c7b29bc'
----

==== Working on a Project with Submodules
==== Práce na projektu se submoduly

Now we have a copy of a project with submodules in it and will collaborate with our teammates on both the main project and the submodule project.
Nyní máme kopii projektu obsahujícího submoduly a budeme spolupracovat s kolegy na hlavním projektu i na projektu submodulu.

===== Pulling in Upstream Changes
===== Aplikování změn z podprojektu

The simplest model of using submodules in a project would be if you were simply consuming a subproject and wanted to get updates from it from time to time but were not actually modifying anything in your checkout.
Let's walk through a simple example there.
Nejjednodušším modelem použití submodulů v projektu by bylo pokud byste pouze používali podprojekt a chtěli čas od času z něj získávat aktualizace, ale nic byste v něm neměnili.
Projděme si jednoduchý příklad.

If you want to check for new work in a submodule, you can go into the directory and run `git fetch` and `git merge` the upstream branch to update the local code.
Když chcete zkontrolovat změny v submodulu, můžete přejít do jeho podadresáře a spustit `git fetch` a `git merge` pro zaktualizování místního kódu z původního repozitáře.

[source,console]
----
Expand All @@ -223,8 +223,8 @@ Fast-forward
2 files changed, 2 insertions(+)
----

Now if you go back into the main project and run `git diff --submodule` you can see that the submodule was updated and get a list of commits that were added to it.
If you don't want to type `--submodule` every time you run `git diff`, you can set it as the default format by setting the `diff.submodule` config value to ``log''.
Když se nyní vrátíte do hlavního projektu a spustíte `git diff --submodule`, uvidíte, že submodul byl aktualizován a získali jste seznam commitů, které do něj byly přidány.
Pokud nechcete psát `--submodule` při každém spuštění `git diff`, můžete to nastavit jako výchozí formát nastavením konfigurační volby `diff.submodule` na ``log''.

[source,console]
----
Expand Down