Существует ли способ 'исправить' мой код на открытый исходный код, поэтому когда проект с открытым исходным кодом улучшается, мои изменения были бы прикреплены на локально?

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

Цель состоит в том, чтобы всегда сохранять основу актуальной, и добавление моего кода к обновленной сборке (вместо того, чтобы быть перезаписанным с изменениями, как я предположил бы, произошел бы, если бы я просто отредактировал источник, как).

Существует ли способ 'исправить' мой код на обновленный код проекта, поэтому когда базовый источник обновляется с svn, мои изменения остались бы независимыми от основы? Я уверен, что существует простой способ сделать это, но я плохо знаком с управлением programming/svn/version и не имею подсказки, какой или где посмотреть.

6
задан Artjom B. 2 February 2015 в 07:50
поделиться

7 ответов

То, что вы ищете, называются Филиалы Vendor SVN .

В основном вы держите отдельную ветвь в своем репозитории для базовых версий только для проекта, а затем объединить изменения между версиями проекта в ваш багажник.

Например:

svn import ./projectdir svn://repourl/project/branches/vendor/current/ -m 'Home for current core version of source code'
svn copy svn://repourl/project/branches/vendor/current/ svn://repourl/project/branches/vendor/1.0.0/ -m '1.0.0 tag of core source code'
svn copy svn://repourl/project/branches/vendor/current/ svn://repourl/project/trunk/ -m 'Initial trunk commit of 1.0.0'

Что мы имеем сейчас:

  • «Текущая» ветвь, которая имеет максимальную доступ к версии основного кода, которую вы используете.
  • Тег «1.0,0» кода основного кода (вы не должны совершать какие-либо новые изменения в этом теге)
  • Ваш багажник, который теперь имеет 1.0,0 базового кода.

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

Вы можете использовать свои венды поставщика для этого.

svn co svn://repourl/project/branches/vendor/current/ ./project

* Экстракт версии 1.1.0 на верхней части рабочей копии *

svn status | grep -E '^?' | xargs svn add # add all new files/directories to the project
svn status | grep -E '^!' | xargs rm -rf  # remove all files/directories from the project that have been deleted
svn commit -m 'Version 1.1.0 of the core code'
svn copy svn://repourl/project/branches/vendor/current/ svn://repourl/project/branches/vendor/1.1.0 -m 'Tag for 1.1.0'
rm -rf ./project

Теперь, что у нас есть? У нас есть:

  • Тег для версии 1.0.0 проекта
  • Тег для версии 1.1.0 проекта
  • багажник с модифицированной версией проекта, который мы хотим привлечь на сегодняшний день.

Итак, что нам нужно сделать? Простая слияние.

svn co svn://repourl/project/trunk ./project
svn merge svn://repourl/branches/vendor/1.0.0 svn://repourl/branches/vendor/1.1.0 ./project

То, что вы говорите, SVN сделать в строке выше, по сути: «Найти различия между версией 1.0.0 проекта и 1.1.0 проекта, а затем объединить эти различия в мою модифицированную версию проекта».

Для большинства файлов слияние будет гладким и безболезненным. Для других, что и вы, и сообщество, в то же время модифицировали, SVN будет жаловаться на конфликты. Если вы не сделали действительно огромных изменений, эти конфликты не должны быть трудно объединиться. Я рекомендую выбрать « p « Для «разрешения отложенного конфликта» и разрешение их с использованием TortoiseSVN. Это намного легче сделать так.

Как только ваши конфликты все будут решены, идите вперед и проверьте приложение. Если все работает, как ожидалось, продолжайте и SVN Commit Ваша рабочая копия.

... и вы закончили!

Некоторые более справочные материалы на тему:

1
ответ дан 17 December 2019 в 20:32
поделиться

Введите здесь код Если упростить (для теста)

$('#'+newId).dialog({autoOpen: true, modal: true, width:width }); 

и сделать так:

$('#SaisieARModal').dialog({autoOpen: true, modal: true, width:width }); 

появится модальный? Вы также пробовали вариант bgiframe: true ?

Не уверены, что что-то из этого полностью актуально, но что-то ставит (скорее всего) селектор даты за модальные вещи где-то.

EDIT: Еще одна вещь, если изменить

$(function() { $("#MytextInputID").datepicker({ dateFormat: 'dd/mm/yy' }); });

на

    $(function() { 
       $("#MytextInputID").datepicker({ dateFormat: 'dd/mm/yy' });
       $("#MytextInputID").click(function(){alert("working");});
    });

, появится ли предупреждение?

-121--2669386-

может просто использовать эти две функции:

void renderstring2d(char string[], float r, float g, float b, float x, float y)
{
    glColor3f(r, g, b);

    glRasterPos2f(x, y);
    for(unsigned int i = 0; i < strlen(string); i++)
        glutBitmapCharacter(GLUT_BITMAP_9_BY_15, string[i]);
}

void renderstring3d(char string[], float r, float g, float b, float x, float y, float z)
{
    glDisable(GL_LIGHTING);
    glColor3f(r, g, b);

    glRasterPos3f(x, y, z);
    for(unsigned int i = 0; i < strlen(string); i++)
        glutBitmapCharacter(GLUT_BITMAP_9_BY_15, string[i]);
}

, тогда при визуализации 2D текста не забудьте сбросить матрицы вида модели и проекции.

glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();

// Render text and quads

glPopMatrix();
glMatrixMode(GL_MODELVIEW);
glPopMatrix();

Нет необходимости выполнять рендеринг для квадрата с использованием этих функций, поскольку эти функции выполняют рендеринг непосредственно для буфера кадров.

И если это не сработает для вас, проверьте это. http://www.opengl.org/resources/faq/technical/fonts.htm

Речь идет о визуализации текста с использованием glBitmap, glDrawPixels и альфа-наложения.

-121--1195912-

Можно установить систему управления версиями локально.

Заполните его копией источника с сервера проекта.

Затем внесите изменения в дополнение к этому.

После обновления ссылочного проекта получите новую копию, а затем объедините изменения в измененный код. Именно это зависит от выбранной системы управления версиями.

Однако, если система управления версиями проекта поддерживает ветвление (что необходимо), можно создать ветвь на их сервере и объединить их, что может быть намного проще.

1
ответ дан 17 December 2019 в 20:32
поделиться

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

Я думаю, что ответы, которые относятся к разветвлению и объединению и распределенных системах управления версиями (а именно. Mercurial, Git) являются более сложными, чем то, что вам нужно.

0
ответ дан 17 December 2019 в 20:32
поделиться

В то время как лично я сделаю это через Mercurial, вы можете посмотреть в инструмент инструмент .

Также проверьте этот обзор .

1
ответ дан 17 December 2019 в 20:32
поделиться

Это выглядит, чтобы ваша упреждаемая ровно соответствует механизму механизма Mercurial . Я бы сказал, что даже для полной новичкой к Mercurial это чертовски легко настроить и поддерживать.

0
ответ дан 17 December 2019 в 20:32
поделиться

Ближайшее, что я могу придумать, это начать с открытого исходного текста в стволе вашего SVN-репозитория, затем создать в нём ответвление и внести изменения в ответвление. Когда код OSS будет обновлен, вы обновите ствол с помощью этого, а затем выполните слияние до вашего ответвления из ствола. В этот момент вы разрешили бы любые конфликты, которые могли возникнуть между тем, что они изменили, и тем, что вы изменили, по существу "исправляя" их изменения в вашем коде.

1
ответ дан 17 December 2019 в 20:32
поделиться

Используйте другую, современную систему управления версиями. Хорошим кандидатом будет git, который используется для разработки ядра Linux по всему миру. ветвление и слияние происходит гораздо естественнее, чем при использовании svn.

-2
ответ дан 17 December 2019 в 20:32
поделиться
Другие вопросы по тегам:

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