Как я перехожу отдельный файл в SVN?

Вы можете преобразовать Kotlin в Java. Затем вы можете видеть, что const имеет еще один статический модификатор, чем val. Простой код, подобный этому.

Kotlin:

const val str = "hello"
class SimplePerson(val name: String, var age: Int)

To Java (Partion):

@NotNull
public static final String str = "hello";

public final class SimplePerson {
   @NotNull
   private final String name;
   private int age;

   @NotNull
   public final String getName() {
      return this.name;
   }

   public final int getAge() {
      return this.age;
   }

   public final void setAge(int var1) {
      this.age = var1;
   }

   public SimplePerson(@NotNull String name, int age) {
      Intrinsics.checkParameterIsNotNull(name, "name");
      super();
      this.name = name;
      this.age = age;
   }
}
9
задан Jon Seigel 29 March 2010 в 04:23
поделиться

8 ответов

К сожалению, я думаю, что реальный ответ здесь - то, что ClearCase обрабатывает эту ситуацию намного лучше, чем Подверсия. С подверсией необходимо перейти все, но ClearCase позволяет своего рода "ленивое ответвление" идея, которая означает, что только определенная группа файлов переходится, остальная часть их все еще следуют за соединительной линией (или какой бы ни переходят, Вы указываете).

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

Erm, извините. Это не было действительно очень хорошим ответом. Но нет хорошего решения этого с Подверсией. Его модель является ответвлением и слиянием.

Править: Хорошо, так подробно останавливающийся, что сказанный crashmstr. Вы могли сделать это:

svn cp $REP/trunk/file.h $REP/branched_files/file.h
svn co $REP/trunk
svn switch $REP/branched_files/file.h file.h

Но ничего себе!, настолько подвержено ошибкам. Каждый раз, когда Вы делаете svn Св., Вы будете видеть это:

svn st
    S  file.h

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

На самом деле существует, вероятно, достойный проект в здесь для моделирования чего-то как разветвленные файлы ClearCase с svn свойствами и переключением, пишущий обертку вокруг стандарта трясины svn клиент для контакта со всей путаницей.

3
ответ дан 4 December 2019 в 11:45
поделиться

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

При создании отдельной папки ответвлений в репозитории Вы могли бы скопировать свои разветвленные файлы там через серверные команды:

svn copy svn://server/project/header.h svn://server/branched_files/header.h

Затем Вы могли переключить тот файл для использования branches_files путь к репозиторию

9
ответ дан 4 December 2019 в 11:45
поделиться

Вот то, как я понимаю Вашу проблему. У Вас есть следующее дерево:

time.h
time.c

и необходимо уменьшить его для нескольких архитектуры:

time.h is comon
time.c (for x386), time.c (for ia64), time.c (for alpha),...

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

Проблема, которой Вы обеспокоены, состоит в том, что при использовании SVN при проверке ответвления, необходимо будет объединить time.h от соединительной линии очень часто или рискнуть работать над более старым файлом (по сравнению с соединительной линией), что сумма издержек не приемлема для Вас.

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

 
/
/headers/
/headers/test.h
/source/
/source/test.c

Затем Вы могли перейти / и использовать svn:externals функцию для соединения заголовков с головой соединительной линии. Это только работает над каталогами и переносит некоторые ограничения относительно фиксации назад test.h (необходимо войти в каталог заголовка для него для работы), но это могло работать.

3
ответ дан 4 December 2019 в 11:45
поделиться

Подверсия "ответвление" является просто копией чего-то в Вашем репозитории. Таким образом, если бы Вы хотели перейти файл, то Вы просто сделали бы:

svn copy myfile.c myfile_branch.c
1
ответ дан 4 December 2019 в 11:45
поделиться

Вы уверены, что Вам действительно нужна эта функция в Вашем VCS?

Для почему бы не использования препроцессора C и #ifdef далеко код, Вам не нужно? Или любой подобный инструмент.

что-то как:

// foo.h:
void Foo();

// foo_win32.c
#ifdef _WIN32
void Foo()
{
   ...
}
#endif

// foo_linux.c
#ifdef _GNUC
void Foo()
{
   ...
}
#endif

Иногда, если это не соответствует праву, затем это не правильное решение.

1
ответ дан 4 December 2019 в 11:45
поделиться

Я не думаю, что существует много точки в ветвлении единственного файла? Нет никакого способа протестировать его с междугородным кодом?

Вы могли взять патч вместо этого, если Вы хотите отступить изменения и применить их позже.

1
ответ дан 4 December 2019 в 11:45
поделиться

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

0
ответ дан 4 December 2019 в 11:45
поделиться

Ответвление в Подверсии точно, о чем Вы говорите. Все файлы являются точной копией соединительной линии, за исключением тех Вы изменяетесь. Это - "дешевая копия" методология, говорил о в Книге SVN. Единственный протест является потребностью объединять соединительную линию в ответвление время от времени, чтобы обеспечить, чтобы изменения, внесенные там, были отражены в ответвлении. Конечно, если те изменения не желаемы, никакая соединительная линия->, слияния ответвления должны произойти.

Один простой способ позволить, чтобы магистральные изменения, которые были объединены в автоматически (который моделирует парадигму Очевидного случая), состоял бы в том, чтобы использовать сценарий рычага перед фиксацией для слияния магистральных изменений в до фиксации. (на самом деле это всегда - хорошая стратегия предотвратить дрейф кода).

0
ответ дан 4 December 2019 в 11:45
поделиться
Другие вопросы по тегам:

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