«Непаслядоўнасць лінія канчатак стыль» кашмар

Я цалкам затрымаўся з памылкай SVN пры здзяйсненні 2447 файлаў адначасова. Я выкарыстоўваю TortoiseSVN (апошняя версія) на Windows 7, 64bits.

Справа ў тым, што некаторыя файлы былі створаны на Mac, і іншыя на ПК, так што TortoiseSVN спыніў фіксацыі з раздражняльнай Супярэчлівыя канчатак радкі стылю памылкі.

In the beginning, to solve this problem, I manually opened the incriminated file in , added one blank space, removed it and saved the file so Netbeans converted properly all line ending chars, but it seems there's more than "some files" incriminated.

Вядома, я шукаў у Інтэрнэце для вырашэння, але я не знайшоў прыдатнай для асяроддзя Windows.

У цяперашні час я стукаў галавой аб сцяну.

16
Напішыце невялікую праграму, якая выглядае для Макінтош стылю тэрмінатара і замяняе іх з вокнамі стылю? Netbeans знайсці і замяніць рэгулярны выраз можа таксама быць у стане зрабіць гэта.
дададзена аўтар assylias, крыніца
Вы можаце захапіць w: (\ ш) \ п $ і заменіце $ 1 \ г \ п , дзе $ 1 з'яўляецца характар.
дададзена аўтар assylias, крыніца
Я аддаю перавагу рашэнне знака @ assylias'S. Я стварыў рэгулярны выраз, якое працуе амаль: \ ш \ п $ <�код /> - ўставілі ўсе знакі Unix EOL, за выключэннем таго, што выбраць і першы сімвал ( \ ш ) у пачатку ...
дададзена аўтар Epoc, крыніца
Дзякуй, што працавала (пасля змены яго няшмат для маіх патрэбаў) !!
дададзена аўтар Epoc, крыніца
Я хацеў бы паспрабаваць выкарыстаць Unix2Dos на Cygwin абалонкі.
дададзена аўтар Kai, крыніца
Notepad ++ таксама можна знайсці і замяніць у некалькі файлаў адначасова і падтрымлівае пошук для \ г , \ п і г.д.
дададзена аўтар Kai, крыніца

7 адказы

У аперацыйнай сістэме Windows 7, вы можаце выкарыстоўваць Notepad ++ v5.6.8 для пераўтварэння EOL

Edit --> EOL Conversion --> Windows/Unix/Mac

21
дададзена

Так што я адказаў на мой уласны пытанне з @ assylias Адкажам :

<�Р> Вы можаце захапіць w: (\ ш) \ п $ і заменіце $ 1 \ г \ п , дзе $ 1 гэта сімвал . </р>

Searching & replacing with Netbeans with this regex does the job.

<�Моцны> Edit: мая праблема была, што карыстацкі скрыпт устаўлены няправільна сімвалы EOL ( \ п замест \ г \ п ) у гэтых файлах)

3
дададзена
Найбольш upvoted адказ значна прасцей, чым у мяне.
дададзена аўтар Epoc, крыніца
Калі гэта працуе лепш для вас, чаму вы не адзначылі яго як адказ?
дададзена аўтар Simon Sobisch, крыніца
@ToolmakerSteve Гэта наўрад ці ў гэтым выпадку, як Epoc зрабіў прыняць адказ, які быў размешчаны праз два тыдні пасля таго, як яго ўласны. Я проста спытаў, таму што ён відавочна пісаў у сваім адказе «гэта працавала для мяне», але адзначыў адказ з найбольшай колькасцю галасоў, як «гэта працавала для мяне».
дададзена аўтар Simon Sobisch, крыніца
@SimonSobisch: Верагодна таму, што StackOverflow не дазволіць вам прыняць свой адказ да 48 гадзін не прайшло, і гэта не варта часу большасці людзей, каб памятаць, каб вярнуцца і прыняць яго, як толькі гэта магчыма.
дададзена аўтар ToolmakerSteve, крыніца

In Notepad++, select " View -> Show Symbol -> Show End of Line"

У полі пошуку (Control-F) выбярыце рэжым пошуку назваў паведамленняў і пошук радкі:

<�Р> [^ \ т] \ п $

(Пераклад: \ п без \ г да яго).

Гэта прынясе вам непасрэдна праблемную радок (), дзе вы ўбачыце канчатак радкі з LF, а не з парай CR-LF

3
дададзена
Вы ўпэўненыя, што кропка пасля групы знакаў з'яўляецца правільнай? AFAICS, гэта рэгулярны выраз выбірае радкі, якія ўтрымліваюць нічога, акрамя \ г вынікаюць альбо вынікаюць \ п . Калі не выраз будзе [^ \ т] \ п $ ?
дададзена аўтар Fabian Streitel, крыніца
Дзякуй, не павінна было быць там. Гэтая форма знайшла для мяне лінію, якая скончылася з \ п, а не \ г \ п. фіксаваны
дададзена аўтар Dror Harari, крыніца
мой NP ++ супадае з $ \ г \ п замест \ г \ п $ (падлічвае канец радка як паўкокс <�я> да лініі падзельнік), толькі ў выпадку, калі хтосьці гэта, якія маюць праблемы
дададзена аўтар Hashbrown, крыніца

Калі лінія заканчэння усё ў парадку, гэта можа быць, што ваш тэкставы файл мае UTF16 Byte Order Mark (BOM).

You can fix that using Notepad++. Encoding -> Convert to UTF-8.

2
дададзена
Добры ўлоў! Па некаторых прычынах вокны планавальніка экспартуе свае задачы ў XML-файлы UCS2 LE BOM кадавання: | чарапахавы не спадабалася, што вельмі шмат, па-відаць. Пасля таго, як будзе UTF Планоўшчык быў яшчэ ў стане імпартаваць іх назад, так што гэта працуе для мяне
дададзена аўтар Hashbrown, крыніца

У Vim ці GVim пад Windows, зламаныя ўсе файлы паказалі ^ M у канцы кожнага радка.

Каб выправіць гэта: : s/\ г//г , каб выдаліць зламаныя лішнія канцы радкоў.

0
дададзена

Для таго, каб вырашыць праблему з рознымі канчаткамі лініі, вы можаце ўсталяваць ўласцівасць SVN наступным чынам:

СВН propset СВН: EOL-стыль роднай my_file

Нягледзячы на ​​тое, што гэта вырашыць праблемы канчаткаў радкоў і зрабіць зліццё лягчэй, то гэта будзе азначаць, што віна будзе паказваць чалавек дадаўшы Eol стылю як чейнджер ўсіх ліній, і гэта таксама азначае, што вашыя працоўныя файлы будуць у канчатковым выніку атрымаць капіююцца ў тэчку Тэмпа пры выкананні диф.

Пытанне віна можа быць вырашана пасля, робячы гэта:

СВН вінаваціць my_file -x "--ignore-прастору-змяненне --ignore-Eol стылю"

0
дададзена

У сувязі з пост крыху вышэй, на самой справе Вім рэгулярны выраз павінна быць : 1, $ s/\ г//г . ? Іншы спосаб на * п х з выкарыстаннем СЭД:

<�Р> сед -i '-es/\ г//г' </р>
0
дададзена
Не стаўлюся да адказу, як «ледзь вышэй.» Яны упарадкаваны па ліку, так што «ледзь вышэй» можа змяніцца. Акрамя таго, гэта павінна быць каментар на гэты адказ, а не асобны адказ, калі гэта проста выпраўленне. Вы павінны ўдакладніць свой адказ, і як зрабіць яго аўтаномным або выдаліць яго.
дададзена аўтар Keith M, крыніца