Git: как поддерживать постоянные параллельные ветви

Попробуйте этот код:

    string[] str_para_linha_comando(string str, out int argumentos)
    {
        string[] linhaComando = new string[32];
        bool entre_aspas = false;
        int posicao_ponteiro = 0;
        int argc = 0;
        int inicio = 0;
        int fim = 0;
        string sub;

        for(int i = 0; i < str.Length;)
        {
            if (entre_aspas)
            {
                // está entre aspas
                sub = str.Substring(inicio+1, fim - (inicio+1)); 
                linhaComando[argc - 1] = sub;

                posicao_ponteiro += ((fim - posicao_ponteiro)+1);
                entre_aspas = false;
                i = posicao_ponteiro; 
            }
            else
            {
            tratar_aspas:
                if (str.ElementAt(i) == '\"')
                {
                    inicio = i; 
                    fim = str.IndexOf('\"', inicio + 1); 
                    entre_aspas = true;
                    argc++;
                }
                else
                {
                    // se não for aspas, então ler até achar o primeiro espaço em branco
                    if (str.ElementAt(i) == ' ')
                    {
                        if (str.ElementAt(i + 1) == '\"')
                        {
                            i++;
                            goto tratar_aspas;
                        }

                        // pular os espaços em branco adiconais 
                        while(str.ElementAt(i) == ' ') i++;

                        argc++;
                        inicio = i;
                        fim = str.IndexOf(' ', inicio);
                        if (fim == -1) fim = str.Length;
                        sub = str.Substring(inicio, fim - inicio);
                        linhaComando[argc - 1] = sub;
                        posicao_ponteiro += (fim - posicao_ponteiro);

                        i = posicao_ponteiro;
                        if (posicao_ponteiro == str.Length) break;
                    }
                    else
                    {
                        argc++;
                        inicio = i; 
                        fim = str.IndexOf(' ', inicio);
                        if (fim == -1) fim = str.Length;

                        sub = str.Substring(inicio, fim - inicio);
                        linhaComando[argc - 1] = sub;
                        posicao_ponteiro += fim - posicao_ponteiro;
                        i = posicao_ponteiro;
                        if (posicao_ponteiro == str.Length) break;
                    }
                }                   
            } 
        }

        argumentos = argc;

        return linhaComando;
    }

Это написано на португальском языке.

24
задан Community 23 May 2017 в 10:31
поделиться

2 ответа

Это действительно зависит от того, что вы хотите сделать с филиалом. Да, если вы освободите локальную, это создаст непередающиеся задницы после перезагрузки. С другой стороны, вы будете поддерживать набор различных изменений, и что на вашей ветке будет набор изменений, как если бы они были сделаны в новейшую главу мастера.

Слияние мастера к местным, вместо этого будет продолжать локальные маршировать вперед во времени с мастером, и будет записывать историю, как это произошло. Если вам нужно быть в состоянии восстановить состояние местного в прошлом, то вы захотите сделать это. История никогда не изменится. Но у вас будет более сложная история, чтобы иметь дело с.

6
ответ дан 29 November 2019 в 00:01
поделиться

Ответ Грега на другой вопрос кажется, что разные ветки остаются локальными для определённых установок, а не перенесены в другие репозитории (курсив добавлен):

Если она локальна для системы, зафиксируйте её в "локальном" ответвлении этой системы, в противном случае зафиксируйте её в "ведущей" и перенесёте в общий репозиторий.

Почти всегда требуется быстрая перемотка вперёд к ответвлениям в общем репозитории. Документация git rebase объясняет, как восстанавливаться после восходящего ребейза (, т.е. , git rebase, а затем git push -f), и это неинтересно никому из вовлечённых в процесс людей.

Для другого подхода см. Никогда не сливать обратно :

Есть действительные случаи, когда вы однажды вилку с намерением никогда не сливать обратно, но в общем случае вы должны очень сильно постараться, чтобы изменения на такой вилке были минимальными.

Далее автор обсуждает политику ветвления для различных клиентских релизов в одном репозитории.

2
ответ дан 29 November 2019 в 00:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: