Слияние через ответвления в Подрывной деятельности не добавляет все новые файлы. Почему нет?

что-то подобное ниже может сделать то, что вам нужно:

while read line 
do 
  for word in $line 
  do 
  [[ ${#word} -eq 3 ]] && echo "$word" $(grep -c "$word" your_file)  
  done 
done < your_file

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

25
задан Eddie 16 April 2009 в 01:42
поделиться

3 ответа

Следующее утверждение неверно:

Файлы, которые были добавлены в ветвь и затем изменены в ветке, не добавляются при объединении по количеству ревизий

будет означать, что слияние полностью нарушено.

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

остерегайтесь, если вы сделаете слияние с рабочей копией, а затем решите, что вы не довольны ею, и отмените все, новые добавленные файлы все еще будут в рабочей копии, поэтому, если вы снова объединитесь, неверсированные файлы будут препятствовать слияния новых файлов нету, так что вы их пропустите. Таким образом, запуск «svn status» и удаление неверсированных файлов обеспечит правильное слияние.

Комментарий о добавлении пустого файла не должен быть сделан, потому что тогда у нового файла нет истории, откуда он взялся. Другими словами, это не копия, поэтому «svn log» не будет показывать свою историю. И, наконец, если бы файл представлял собой гигабайтную фотографию, вам бы не хотелось объединять ее в новый файл, потому что тогда в хранилище было бы две копии одного и того же контекста. Объединение и копирование с историей экономит хранилище репозитория (по крайней мере, пока не введено совместное использование репов).

29
ответ дан 28 November 2019 в 18:27
поделиться

Files that were added to a branch and then changed on the branch don't get added when doing a merge across a number of revisions because subversion is trying to apply a context diff to a file that doesn't exist in the working directory (the new file). You will see a warning from svn stating something like "Skipping missing file blah.c..."

There are two basic ways to deal with this. Commit your branch (this is always a good idea since merging can mess things up sometimes and it's much nicer to simply be able to revert), then merge each specific revision that adds files (one at a time) in order to ensure that the files actually get added to your working directory.

The other option you have is to create empty files (e.g., using the unix touch command) for all the files that were added across the revisions (you can get a list of these files by simply doing the merge with the --dry-run specifier and taking note of all the "Skipping missing file" warnings), then run the merge with your entire revision list (like -r 1023:1040). That will merge the changes into the new empty files and everything should be peachy :)

1
ответ дан Jason Coco 28 November 2019 в 18:27
поделиться

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

Затем я понял, что все эти файлы уже существуют, хотя и не версионированы, в моей рабочей копии ствола - я провел тестовое слияние (не пробный запуск) неделей ранее и вернулся, но файлы так и не были удалены физически. моим клиентом SVN. Как только я физически удалил их из своей рабочей копии транка, проблема исчезла!

30
ответ дан 28 November 2019 в 18:27
поделиться
Другие вопросы по тегам:

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