Ver código fonte

Merge branch 'master' of https://github.com/defold/doc

Björn Ritzl 7 meses atrás
pai
commit
710a867b88

+ 3 - 1
docs/en/manuals/editor-scripts.md

@@ -118,13 +118,15 @@ return M
 Editor expects `get_commands()` to return an array of tables, each describing a separate command. Command description consists of:
 
 - `label` (required) — text on a menu item that will be displayed to the user
-- `locations` (required) — an array of either `"Edit"`, `"View"`, `"Assets"` or `"Outline"`, describes a place where this command should be available. `"Edit"` and `"View"` mean menu bar at the top, `"Assets"` means context menu in Assets pane, and `"Outline"` means context menu in Outline pane.
+- `locations` (required) — an array of either `"Edit"`, `"View"`, `"Assets"`, `"Bundle"` or `"Outline"`, describes a place where this command should be available. `"Edit"` and `"View"` mean menu bar at the top, `"Assets"` means context menu in Assets pane, `"Outline"` means context menu in Outline pane, and `"Bundle"` means **Project → Bundle** submenu.
 - `query` — a way for command to ask editor for relevant information and define what data it operates on. For every key in `query` table there will be corresponding key in `opts` table that `active` and `run` callbacks receive as argument. Supported keys:
   - `selection` means this command is valid when there is something selected, and it operates on this selection.
     - `type` is a type of selected nodes command is interested in, currently these types are allowed:
       - `"resource"` — in Assets and Outline, resource is selected item that has a corresponding file. In menu bar (Edit or View), resource is a currently open file;
       - `"outline"` — something that can be shown in the Outline. In Outline it's a selected item, in menu bar it's a currently open file;
     - `cardinality` defines how many selected items there should be. If `"one"`, selection passed to command callback will be a single node id. If `"many"`, selection passed to command callback will be an array of one or more node ids.
+  - `argument` — command argument. Currently, only commands in `"Bundle"` location receive an argument, which is `true` when the bundle command is selected explicitly and `false` on rebundle.
+- `id` - command identifier string, used e.g. for persisting the last used bundle command in prefs
 - `active` - a callback that is executed to check that command is active, expected to return boolean. If `locations` include `"Assets"` or `"Outline"`, `active` will be called when showing context menu. If locations include `"Edit"` or `"View"`, active will be called on every user interaction, such as typing on keyboard or clicking with mouse, so be sure that `active` is relatively fast.
 - `run` - a callback that is executed when user selects the menu item.
 

+ 1 - 1
docs/en/manuals/extender-local-setup.md

@@ -24,7 +24,7 @@ Once you have the above mentioned software installed follow these steps to insta
 1. __Authorize to Google Cloud and create Application default credentials__ - You need to have a Google account when downloading the Docker container images so that we can monitor and ensure fair use of the public container registry and temporarily suspend accounts which download images excessively.
 
    ```sh
-   gcloud auth application-default login
+   gcloud auth login
    ```
 2. __Configure Docker to use Artifact registries__ - Docker needs to be configured to use `gcloud` as a credential helper when downloading container images from the public container registry at `europe-west1-docker.pkg.dev`.
 

+ 26 - 23
docs/en/manuals/lua.md

@@ -7,10 +7,10 @@ brief: This manual will give a quick introduction to the basics of Lua programmi
 
 The Defold engine has the Lua language embedded for scripting. Lua is a lightweight dynamic language that is powerful, fast, and easy to embed. It is widely used as a videogame scripting language. Lua programs are written in a simple procedural syntax. The language is dynamically typed and is run by a bytecode interpreter. It features automatic memory management with incremental garbage collection.
 
-This manual will give a quick introduction to the basics of Lua programming in general and what you need to consider when working with Lua in Defold. If you have some experience with Python, Perl, Ruby, Javascript or a similar dynamic language you will get going pretty quickly. If you are totally new to programming you might want to start with a Lua book aimed at beginners. There are plenty to choose from.
+This manual will give a quick introduction to the basics of Lua programming in general and what you need to consider when working with Lua in Defold. If you have some experience with Python, Perl, Ruby, Javascript, or a similar dynamic language you will get going pretty quickly. If you are new to programming you might want to start with a Lua book aimed at beginners. There are plenty to choose from.
 
 ## Lua versions
-We aim to keep Defold the same across all platforms, but we currently have a few minor discrepancies in Lua language version between platforms:
+We aim to keep Defold the same across all platforms, but we currently have a few minor discrepancies in the Lua language version between platforms:
 
 | Platform        | Lua version         | JIT Enabled |
 |-----------------|---------------------|-------------|
@@ -24,9 +24,9 @@ We aim to keep Defold the same across all platforms, but we currently have a few
 
 *=JIT compiled code is not allowed
 
-[LuaJIT](https://luajit.org/) is a highly optimized version of Lua, suitable for use in games and other performance critical software. LuaJIT is fully upwards-compatible with Lua 5.1. It supports all standard Lua library functions and the full set of Lua/C API functions.
+[LuaJIT](https://luajit.org/) is a highly optimized version of Lua suitable for use in games and other performance-critical software. It is fully upwards compatible with Lua 5.1 and supports all standard Lua library functions and the full set of Lua/C API functions.
 
-LuaJIT also adds a number of [language extensions](https://luajit.org/extensions.html) and some features from Lua 5.2.
+LuaJIT also adds several [language extensions](https://luajit.org/extensions.html) and some Lua 5.2 and 5.3 features.
 
 ::: important
 To guarantee that your game works across all supported platforms we strongly recommend that you ONLY use language features from Lua 5.1.
@@ -60,7 +60,7 @@ All libraries are documented in the [reference API documentation](/ref/go).
 
 ### Books
 * [Programming in Lua](https://www.amazon.com/gp/product/8590379868/ref=dbs_a_def_rwt_hsch_vapi_taft_p1_i0) - Programming in Lua is the official book about the language, providing a solid base to any programmer who wants to use Lua. Authored by Roberto Ierusalimschy, the chief architect of the language.
-* [Lua programming gems](https://www.amazon.com/Programming-Gems-Luiz-Henrique-Figueiredo/dp/8590379841) - This collection of articles record some of the existing wisdom and practice on how to program well in Lua.
+* [Lua programming gems](https://www.amazon.com/Programming-Gems-Luiz-Henrique-Figueiredo/dp/8590379841) - This collection of articles records some of the existing wisdom and practice on how to program well in Lua.
 * [Lua 5.1 reference manual](https://www.amazon.com/gp/product/8590379833/ref=dbs_a_def_rwt_hsch_vapi_taft_p1_i4) - Also available online (see above)
 * [Beginning Lua Programming](https://www.amazon.com/Beginning-Lua-Programming-Kurt-Jung/dp/0470069171)
 
@@ -69,7 +69,7 @@ All libraries are documented in the [reference API documentation](/ref/go).
 
 ## Syntax
 
-Programs have simple, easy to read syntax. Statements are written one on each line and there is no need to mark the end of a statement. You can optionally use semicolons `;` to separate statements. Blocks of code are keyword delimited, ending with the `end` keyword. Comments can be either block or until the end of the line:
+Programs have simple, easy-to-read syntax. Statements are written one on each line and there is no need to mark the end of a statement. You can optionally use semicolons `;` to separate statements. Blocks of code are keyword delimited, ending with the `end` keyword. Comments can be either written in a block or until the end of the line:
 
 ```lua
 --[[
@@ -89,10 +89,13 @@ end
 
 ## Variables and data types
 
-Lua is dynamically typed which means that variables do not have types, but values do. Unlike in typed languages, you can assign any value to any variable as you like. There are eight basic types in Lua:
+Lua is dynamically typed, meaning variables do not have types, but values do. 
+Unlike in statically typed languages, you can assign any value to any variable as you like. 
+
+There are eight basic types in Lua:
 
 `nil`
-: This type only has the value `nil`. It usually represents the absence of a useful value, for example unassigned variables.
+: This type only has the value `nil`. It usually represents the absence of a useful value, for example, unassigned variables.
 
   ```lua
   print(my_var) -- will print 'nil' since 'my_var' is not yet assigned a value
@@ -173,7 +176,7 @@ string
   ```
 
 function
-: Functions are first class values in Lua, meaning that you can pass them as parameters to functions and return them as values. Variables assigned to a function contain a reference to the function. You can assign variables to anonymous functions, but Lua provides syntactic sugar (`function name(param1, param2) ... end`) for convenience.
+: Functions are first-class values in Lua, meaning that you can pass them as parameters to functions and return them as values. Variables assigned to a function contain a reference to the function. You can assign variables to anonymous functions, but Lua provides syntactic sugar (`function name(param1, param2) ... end`) for convenience.
 
   ```lua
   -- Assign 'my_plus' to function
@@ -211,7 +214,7 @@ function
   ```
 
 table
-: Tables are the only data-structuring type in Lua. They are associative array _objects_ that are used to represent lists, arrays, sequences, symbol tables, sets, records, graphs, trees etc. Tables are always anonymous and variables you assign a table to do not contain the table itself, but a reference to it. When initializing a table as a sequence, the first index is `1`, not `0`.
+: Tables are the only data-structuring type in Lua. They are associative array _objects_ that are used to represent lists, arrays, sequences, symbol tables, sets, records, graphs, trees, etc. Tables are always anonymous and variables you assign a table to do not contain the table itself, but a reference to it. When initializing a table as a sequence, the first index is `1`, not `0`.
 
   ```lua
   -- Initialize a table as a sequence
@@ -411,7 +414,7 @@ for
   ```
 
 break and return
-: Use the `break` statement to break out of an inner block of a `for`, `while` or `repeat` loop. Use `return` to return a value from a function or to finish execution of a function and return to the caller. `break` or `return` can appear only as the last statement of a block.
+: Use the `break` statement to break out of an inner block of a `for`, `while` or `repeat` loop. Use `return` to return a value from a function or to finish the execution of a function and return to the caller. `break` or `return` can appear only as the last statement of a block.
 
   ```lua
   a = 1
@@ -433,7 +436,7 @@ break and return
 
 All variables that you declare are by default global, meaning that they are available through all parts of the Lua runtime context. You can explicitly declare variables `local`, meaning that the variable will only exist within the current scope.
 
-Each Lua source file defines a separate scope. Local declarations on the topmost level in a file means the variable is local to the Lua script file. Each function creates another nested scope and each control structure block creates additional scopes. You can explicitly create scope with the `do` and `end` keywords. Lua is lexically scoped, meaning that a scope has full access to _local_ variables from the enclosing scope. Note that the local variables must be declared prior to their use.
+Each Lua source file defines a separate scope. Local declarations on the topmost level in a file mean the variable is local to the Lua script file. Each function creates another nested scope and each control structure block creates additional scopes. You can explicitly create a scope with the `do` and `end` keywords. Lua is lexically scoped, meaning that a scope has full access to _local_ variables from the enclosing scope. Note that the local variables must be declared before their use.
 
 ```lua
 function my_func(a, b)
@@ -518,7 +521,7 @@ end
 
 ## Coroutines
 
-Functions execute from beginning to end and there is no way to stop them midway through. Coroutines allow you to do that, which can be very convenient in some cases. Suppose we want to create a very specific frame-by-frame animation where we move a game object from y position `0` to some very specific y positions from frame 1 to frame 5. We could solve that with a counter in the `update()` function (see below) and a list of the positions. However, with a coroutine we get a very clean implementation that is easy to extend and work with. All state is contained within the coroutine itself.
+Functions execute from beginning to end and there is no way to stop them midway through. Coroutines allow you to do that, which can be very convenient in some cases. Suppose we want to create a very specific frame-by-frame animation where we move a game object from y position `0` to some very specific y positions from frame 1 to frame 5. We could solve that with a counter in the `update()` function (see below) and a list of the positions. However, with a coroutine, we get a very clean implementation that is easy to extend and work with. All state is contained within the coroutine itself.
 
 When a coroutine yields it returns control back to the caller but remembers its execution point so it can continue from there later on.
 
@@ -549,11 +552,11 @@ end
 
 ## Lua contexts in Defold
 
-All variables that you declare are by default global, meaning that they are available through all parts of the Lua runtime context. Defold has a setting *shared_state* setting in *game.project* that controls this context. If the option is set, all scripts, GUI scripts and the render script are evaluated in the same Lua context and global variables are visible everywhere. If the option is not set, the engine executes scripts, GUI scripts and the render script in separate contexts.
+All variables that you declare are by default global, meaning that they are available through all parts of the Lua runtime context. Defold has a setting *shared_state* setting in *game.project* that controls this context. If the option is set, all scripts, GUI scripts, and the render script are evaluated in the same Lua context and global variables are visible everywhere. If the option is not set, the engine executes scripts, GUI scripts, and the render script in separate contexts.
 
 ![Contexts](images/lua/lua_contexts.png)
 
-Defold allows you to use the same script file in several separate game object components. Any locally declared variables are shared between components that runs the same script file.
+Defold allows you to use the same script file in several separate game object components. Any locally declared variables are shared between components that run the same script file.
 
 ```lua
 -- 'my_global_value' will be available from all scripts, gui_scripts, render script and modules (Lua files)
@@ -581,9 +584,9 @@ end
 
 ## Performance considerations
 
-In a high performance game that is intended to run at a smooth 60 FPS small performance mistakes can have a large impact on the experience. There are some simple general things to consider and some things that might not seem problematic.
+In a high-performance game that is intended to run at a smooth 60 FPS small performance mistakes can have a large impact on the experience. There are some simple general things to consider and some things that might not seem problematic.
 
-Beginning with the simple things. It is generally a good idea to write code that is straightforward and that does not contain unnecessary loops. Sometimes you do need to iterate over lists of things, but be careful if the list of things is sufficiently large. This example runs in slightly over 1 millisecond on a pretty decent laptop, which can make all the difference if each frame is only 16 milliseconds long (at 60 FPS) and with the engine, render script, physics simulation and so forth eating up a chunk of that.
+Beginning with the simple things. It is generally a good idea to write straightforward code that does not contain unnecessary loops. Sometimes you do need to iterate over lists of things, but be careful if the list of things is sufficiently large. This example runs in slightly over 1 millisecond on a pretty decent laptop, which can make all the difference if each frame is only 16 milliseconds long (at 60 FPS) and with the engine, render script, physics simulation, and so forth eating up a chunk of that.
 
 ```lua
 local t = socket.gettime()
@@ -600,13 +603,13 @@ Use the value returned from `socket.gettime()` (seconds since system epoch) to b
 
 ## Memory and garbage collection
 
-Lua's garbage collection runs automatically in the background by default and reclaims memory that the Lua runtime has allocated. Collecting lots of garbage can be a time consuming task so it is good to keep down the number of objects that needs to be garbage collected:
+Lua's garbage collection runs automatically in the background by default and reclaims memory that the Lua runtime has allocated. Collecting lots of garbage can be a time-consuming task so it is good to keep down the number of objects that need to be garbage collected:
 
 * Local variables are in themselves free and will not generate garbage. (i.e. `local v = 42`)
 * Each _new unique_ string creates a new object. Writing `local s = "some_string"` will create a new object and assign `s` to it. The local `s` itself will not generate garbage, but the string object will. Using the same string multiple times adds no additional memory cost.
 * Each time a table constructor is executed (`{ ... }`) a new table is created.
 * Executing a _function statement_ creates a closure object. (i.e. executing the statement `function () ... end`, not calling a defined function)
-* Vararg functions (`function(v, ...) end`) create a table for the ellipsis each time the function is _called_ (in Lua prior to version 5.2, or if not using LuaJIT).
+* Vararg functions (`function(v, ...) end`) create a table for the ellipsis each time the function is _called_ (in Lua before version 5.2, or if not using LuaJIT).
 * `dofile()` and `dostring()`
 * Userdata objects
 
@@ -644,7 +647,7 @@ self.velocity.y = 0
 self.velocity.z = 0
 ```
 
-The default garbage collecting scheme may not be optimal for some time critical applications. If you see stutter in your game or app, you might want to tune how Lua collects garbage through the [`collectgarbage()`](/ref/base/#collectgarbage) Lua function. You can, for instance, run the collector for a short time every frame with a low `step` value. To get an idea how much memory your game or app is eating, you can print the current amount of garbage bytes with:
+The default garbage-collecting scheme may not be optimal for some time-critical applications. If you see a stutter in your game or app, you might want to tune how Lua collects garbage through the [`collectgarbage()`](/ref/base/#collectgarbage) Lua function. You can, for instance, run the collector for a short time every frame with a low `step` value. To get an idea how much memory your game or app is eating, you can print the current amount of garbage bytes with:
 
 ```lua
 print(collectgarbage("count") * 1024)
@@ -655,7 +658,7 @@ print(collectgarbage("count") * 1024)
 A common implementation design consideration is how to structure code for shared behaviors. Several approaches are possible.
 
 Behaviors in a module
-: Encapsulating a behavior in a module allows you to easily share code between different game objects’ script components (and GUI scripts). When writing module functions it is generally best to write strictly functional code. There are cases where stored state or side effects are a necessity (or lead to cleaner design). If you have to store internal state in the module, be aware that components share Lua contexts. See the [Modules documentation](/manuals/modules) for details.
+: Encapsulating a behavior in a module allows you to easily share code between different game objects’ script components (and GUI scripts). When writing module functions it is generally best to write strictly functional code. There are cases where stored state or side effects are a necessity (or lead to cleaner design). If you have to store the internal state in the module, be aware that components share Lua contexts. See the [Modules documentation](/manuals/modules) for details.
 
   ![Module](images/lua/lua_module.png)
 
@@ -667,10 +670,10 @@ A helper game object with encapsulated behavior
   ![Helper](images/lua/lua_helper.png)
 
 Grouping game object with helper behavior object inside a collection
-: In this design you can create a behavior game object that automatically acts upon another target game object, either by a predefined name (the user has to rename the target game object to match), or through a `go.property()` URL that points to the target game object.
+: In this design, you can create a behavior game object that automatically acts upon another target game object, either by a predefined name (the user has to rename the target game object to match) or through a `go.property()` URL that points to the target game object.
 
   ![Collection](images/lua/lua_collection.png)
 
-  The benefit with this setup is that you can drop a behavior game object into a collection containing the target object. Zero additional code is needed.
+  The benefit of this setup is that you can drop a behavior game object into a collection containing the target object. Zero additional code is needed.
 
   In situations where you need to manage large quantities of game objects, this design is not preferable since the behavior object is duplicated for each instance and each object will cost memory.

+ 0 - 54
docs/en/manuals/version-control.md

@@ -15,60 +15,6 @@ When you save changes in your local working copy, Defold tracks all changes in t
 
 Select a file in the list and click <kbd>Diff</kbd> to view the changes that you have done to the file or <kbd>Revert</kbd> to undo all changes and restore the file to the state it had after the last synchronization.
 
-## Synchronizing
-
-::: important
-Project synchronization can also be performed using one of the many excellent external tools for working with Git repositories. [GitHub Desktop](https://desktop.github.com/), [GitTower](https://www.git-tower.com), [Git Kraken](https://www.gitkraken.com/git-client) and [SourceTree](https://www.sourcetreeapp.com/) are some of the more popular ones.
-:::
-
-To synchronize your project means that the project files are brought into sync with the project as it looks on the remote server. You should synchronize if:
-
-1. You want to bring your project up to speed with what is stored on the server.
-2. You want to share your local project changes with other team members by committing and pushing your changes to the server.
-
-To start synchronizing, select <kbd>File ▸ Synchronize</kbd> in the menu. A series of dialogs guide you through the synchronization process.
-
-![Start sync](images/workflow/sync.png)
-
-Press <kbd>Pull</kbd> to pull changes from the server and merge them with your local changes. If there are conflicts, you are asked to resolve them:
-
-![Resolve](images/workflow/resolve.png)
-
-Mark each conflicting file, right-click and select the action to take:
-
-View Diff
-: Bring up a textual diff view of your and the server version of the file.
-
-  ![diff view](images/workflow/diff.png)
-
-  On the left hand side is the file pulled from the server. The right hand side shows your local version. Any differences are clearly highlighted so you can quickly review them.
-
-  The built-in file comparison tool works on text files only. However, since Defold stores all working files (game objects, collections, atlases, etc etc) in easily understandable JSON files, you can often figure out the meaning of the changes that have been made to such files:
-
-Use Ours
-: Discard the changes from the server and instead use your version.
-
-Use Theirs
-: Discard your version and instead use the server version.
-
-::: sidenote
-The editor does not allow you to pick changes from the two conflicting files. If you need to do this you can perform the Git operations from the command line and use a separate merge tool.
-:::
-
-When the editor is done pulling changes and any conflicts are resolved, a dialog asks you how to proceed.
-
-![pull done](images/workflow/push.png)
-
-* Press <kbd>Cancel</kbd> to abort and return the project to the state it was in prior to synchronization.
-* Press <kbd>Push</kbd> to continue committing and pushing your changes to the server.
-* Press <kbd>Done</kbd> to accept the server changes and conflict resolutions, but do not continue pushing. You can always push at a later stage.
-
-If you continue pushing and have local changes, you are asked to commit them before pushing. A dialog allows you to select (stage) the files that should be included in the commit framed orange in the image below).
-
-![stage](images/workflow/stage.png)
-
-Press <kbd>Push</kbd> to commit and push your changes to the server.
-
 ## Git
 
 Git is built primarily to handle source code and text files and stores those types of files with a very low footprint. Only the changes between each version are stored, which means that you can keep an extensive history of changes to all your project files to a relatively small cost. Binary files such as image or sound files, however, does not benefit from Git's storage scheme. Each new version you check in and synchronize takes about the same space. That is usually not a major issue with final project assets (JPEG or PNG images, OGG sound files etc) but it can quickly become an issue with working project files (PSD files, Protools projects etc). These types of files often grow very large since you usually work in much higher resolution than the target assets. It is generally considered best to avoid putting large working files under the control of Git and instead use a separate storage and backup solution for those.

+ 1 - 1
docs/ru/manuals/extender-local-setup.md

@@ -19,7 +19,7 @@ brief: Руководство описывает как установить и
 **Примечание для пользователей Windows**: используйте git bash для выполнения команд описанных ниже.
 1. Авторизуемся в Google Cloud и создаем учетные данные приложения по умолчанию (Application default credentials/ADC)
    ```sh
-   gcloud auth application-default login
+   gcloud auth login
    ```
 2. Конфигурируем Docker для использования реестра Артефактов
    ```sh

+ 0 - 54
docs/ru/manuals/version-control.md

@@ -15,60 +15,6 @@ Defold создан для небольших команд, которые в т
 
 Выберите файл в списке и нажмите <kbd>Diff</kbd>, чтобы просмотреть изменения, которые вы внесли в файл, или <kbd>Revert</kbd>, чтобы откатить все изменения и восстановить файл до состояния, которое он имел после последней синхронизации. 
 
-## Синхронизация
-
-::: important
-Синхронизацию проекта также можно выполнить с помощью одного из множества отличных внешних инструментов для работы с Git репозиториями. [GitHub Desktop](https://desktop.github.com/), [GitTower](https://www.git-tower.com), [Git Kraken](https://www.gitkraken.com/git-client) и [SourceTree](https://www.sourcetreeapp.com/) - одни из наиболее популярных. 
-:::
-
-Синхронизация проекта означает, что файлы проекта синхронизируются с состоянием проекта на удаленном сервере. Вам следует выполнять синхронизацию, если: 
-
-1. Вы хотите привести свой проект в соответствие с тем, что хранится на сервере.
-2. Вы хотите поделиться своими локальными изменениями проекта с другими членами команды, зафиксировав и отправив свои изменения на сервер.
-
-Чтобы начать синхронизацию, выберите в меню пункт <kbd>File ▸ Synchronize</kbd>. Последовательность диалогов проведет вас через процесс синхронизации. 
-
-![Начать синхронизацию](images/workflow/sync.png)
-
-Нажмите <kbd>Pull</kbd>, чтобы получить изменения с сервера и слить их с вашими локальными изменениями. Если есть конфликты, система попросит вас разрешить их: 
-
-![Resolve](images/workflow/resolve.png)
-
-Отметьте каждый конфликтующий файл, щелкните правой кнопкой мыши и выберите действие, которое нужно предпринять: 
-
-View Diff
-: Вывести текстовое представление различий вашей и серверной версии файла. 
-
-  ![diff view](images/workflow/diff.png)
-
-  Слева находится файл, полученный с сервера. Справа показана ваша локальная версия. Любые различия четко выделены, так что вы можете быстро их просмотреть.
-
-   Встроенный инструмент сравнения файлов работает только с текстовыми файлами. Однако, поскольку Defold хранит все рабочие файлы (игровые объекты, коллекции, атласы и т. д.) в легко читаемых файлах JSON, вы зачастую сможете понять смысл изменений, которые были внесены в такие файлы: 
-
-Use Ours
-: Отменить изменения с сервера и вместо этого использовать вашу версию.
-
-Use Theirs
-: Выкинуть свою версию и использовать вместо нее версию сервера. 
-
-::: sidenote
-Редактор не позволяет точечно отбирать изменения из обоих конфликтующих файлов. Если вам нужно это сделать, вы можете выполнять Git операции из командной строки и использовать отдельный инструмент слияния. 
-:::
-
-Когда редактор закончит с подтягиванием изменений и все конфликты будут разрешены, появится диалоговое окно с вопросом, как действовать дальше. 
-
-![стягивание завершено](images/workflow/push.png)
-
-* Нажмите <kbd>Cancel</kbd>, чтобы прервать операцию и вернуть проект в состояние, в котором он находился до синхронизации.
-* Нажмите <kbd>Push</kbd>, чтобы продолжить с фиксацией и публикацией ваших изменений на сервер.
-* Нажмите <kbd>Done</kbd>, чтобы принять изменения с сервера и разрешения конфликтов, но без последующей публикации. Вы всегда можете опубликоваться на сервер на более позднем этапе. 
-
-Если вы продолжаете публикацию и имеете локальные изменения, вас попросят зафиксировать (commit) их перед публикацией (push-ем). Диалоговое окно позволяет вам выбрать (подготовить) файлы, которые должны быть включены в коммит (обведено оранжевой рамкой на изображении ниже).
-
-![stage](images/workflow/stage.png)
-
-Нажмите <kbd>Push</kbd>, чтобы зафиксировать и отправить изменения на сервер. 
-
 ## Git
 
 Инструмент Git создан в первую очередь для обработки исходного кода и текстовых файлов и хранит эти типы файлов с минимальными издержками. Сохраняются только изменения (дельты) между каждой версией, что означает, что вы можете вести обширную историю изменений всех файлов вашего проекта с относительно небольшими затратами. Однако двоичные файлы, такие как изображения или звуковые файлы, не получают преимуществ от схемы хранения Git. Каждая новая версия, которую вы регистрируете и синхронизируете, занимает примерно одно и то же место. Обычно это не является серьезной проблемой с конечными ассетами проекта (изображения JPEG или PNG, звуковые файлы OGG и т. д.), н может быстро стать проблемой с рабочими файлами проекта (файлы PSD, проекты Protools и т. д.). Эти типы файлов часто сильно разрастаются в объеме, поскольку вы обычно работаете с гораздо более высоким разрешением, чем целевые ресурсы. Обычно считается, что лучше избегать передачи больших рабочих файлов для Git версионирования и вместо этого использовать для них отдельное хранилище и решение для резервного копирования.

+ 0 - 54
docs/zh/manuals/version-control.md

@@ -15,60 +15,6 @@ Defold 为密切合作的小游戏团队而设计. 团队成员可以并行工
 
 选中一个文件点击 <kbd>Diff</kbd> 来查看更改, 或者点击 <kbd>Revert</kbd> 来把文件还原回上次同步后的状态.
 
-## Synchronizing
-
-::: sidenote
-可以使用各种外部 Git 工具进行同步. [GitHub Desktop](https://desktop.github.com/), [GitTower](https://www.git-tower.com), [Git Kraken](https://www.gitkraken.com/git-client) 还有 [SourceTree](https://www.sourcetreeapp.com/) 都是很常用的.
-:::
-
-项目同步意味着使本地项目文件与远程保持一致. 在以下情况下项目需要同步:
-
-1. 你想把服务器端最新进展更新到本地.
-2. 你想把本地进展提交并推送到服务器端.
-
-要同步项目, 选择菜单栏 <kbd>File ▸ Synchronize</kbd>. 会有一系列引导对话框帮助你完成同步.
-
-![Start sync](images/workflow/sync.png)
-
-点击 <kbd>Pull</kbd> 从服务器拉取更新并混合到本地. 如果发现冲突, 会提示你来解决:
-
-![Resolve](images/workflow/resolve.png)
-
-对于每个冲突文件, 右键点击后从弹出菜单选择解决方法:
-
-View Diff
-: 打开对比差别的文本编辑器.
-
-  ![diff view](images/workflow/diff.png)
-
-  左边是从服务器上拉取的文件内容. 右边是本地的文件内容. 差别之处会做高亮显示便于查看.
-
-  内置比较工具仅用于文本文件. 然而, 因为 Defold 把项目中的许多文件 (游戏对象, 集合, 图集等等) 存储成简单易懂的 JSON 文件, 进行对比时也能明白区别是什么:
-
-Use Ours
-: 使用本地文件覆盖网络文件.
-
-Use Theirs
-: 使用网络文件覆盖本地文件.
-
-::: sidenote
-编辑器不提供对每个差别选择保留哪个的功能. 如果需要此功能可以使用 Git 命令行的混合工具.
-:::
-
-拉取更新并解决冲突之后, 会提示完成对话框.
-
-![pull done](images/workflow/push.png)
-
-* 点击 <kbd>Cancel</kbd> 取消此次同步.
-* 点击 <kbd>Push</kbd> 把本地更新提交并推送到服务器.
-* 点击 <kbd>Done</kbd> 接受服务器更新和冲突解决, 只是不再向服务器推送结果. 推送的工作随时可以进行.
-
-如果打算向服务器推送更新, 第一步必须做提交工作. 推送对话框会让你选择哪些文件需要提交并推送 (下图以橙色方框标明).
-
-![stage](images/workflow/stage.png)
-
-点击 <kbd>Push</kbd> 即可提交并推送到服务器.
-
 ## Git
 
 Git 是知名的版本控制系统. 通过保留差别实现版本控制, 所以即使提交了很多版本其占用空间也不是很大. 但是像图片和声音这样的二进制文件, 就无法从 Git 的存储方案中收益了. 它们每次的提交都会保存整个文件而不是差异. 对于小文件还好办 (JPEG 或者 PNG 图片, OGG 声音文件之类的), 但是对于大型工程源文件 (PSD 文件, Protools 项目文件之类的). 这些文件随着项目进展越长越大. 这样的文件最好别用 Git 托管而是另找地方进行备份.