2010-12-14 17 views
5

Mam więc zabawny problem.

Subversion, zmiana nazwy, Wha?

Subversion, nie można zmieniać nazwy elementów o tej samej nazwie, jeśli jedyną różnicą jest użycie wielkich liter. Netbeans ma subwersję. Netbeans umożliwia zmianę nazw plików w przypadku zmiany wielkości liter.

Zmieniłem nazwę czegoś o nazwie eventCreator.php na EventCreator.php w subversion i przesłałem (jest to klasa). Wszystko poszło dobrze w Netbeans. W rzeczywistości, wykonałem około 10 kolejnych zatwierdzeń. Próbowałem pobrać go na inny komputer i jest to błąd, który się zdarza
"Nie można otworzyć pliku
C: \ xampp \ htdocs \ MyProject \ scripts.svn \ tmp \ baza-tekst \ eventCreator.php.svn- base ':
System nie może znaleźć określonego pliku. "

Moje repozytorium znajduje się w DreamHost. Więc idę do Dreamhosta i jestem w stanie przejść do folderu skryptów i zobaczyć zarówno eventCreator.php, jak i EventCreator.php w repozytorium, ale nie mogę go pobrać ani z netbeans, ani z tortoiseSVN.
Jakaś pomoc?

+0

Zobowiązanie nie aktualizuje wiersza z informacją "10 więcej zatwierdzeń/aktualizacji" – Michael

Odpowiedz

6

Usuń nie potrzebny plik z

svn del http://domain/path/to/eventCreator.php 

lub można nawet otwarte repo browser (z menu kontekstowego Subversion) i usunąć plik istnieje, bez korzystania z poleceń konsoli nudne ;-)

2

Subversion jest wielkość liter . Jeśli powiesz, że przechowujesz 20 plików o różnych kombinacjach wielkości liter, to zapisze je. Teraz, po sprawdzeniu tych plików z repozytorium, platforma, na której jesteś, może cię ostrzec, odmówić wyewidencjonowania (tak jak w twoim przypadku) lub po prostu zastąpić zawartość pierwszego pliku napisanego drugą, po trzecie, masz pomysł.

Aby rozwiązać ten problem, odpowiedź Zerkmsa jest właściwa. Usuń wersję pliku, której nie chcesz, za pomocą przeglądarki repozytorium lub jakiegoś narzędzia (w razie potrzeby wiersza polecenia), który działa bezpośrednio z repozytorium na serwerze.

Aby uniknąć powtórki, użyj case-insensitive.py script z projektu Subversion w swoim skrypcie przechwytywania przed zatwierdzeniem. Sprawdza, czy w repozytorium znajduje się już plik z innym przypadkiem, gdy commit dodaje plik. Jeśli tak, to pozwoli ci odrzucić zatwierdzenie, dopóki nie zostanie rozwiązane.

Ponieważ posiadasz stronę trzecią obsługującą swoje repozytorium Subversion, skontaktuj się z nim w sprawie uzyskania tego haka, jeśli nie możesz tego zrobić przy użyciu narzędzi do zarządzania.

+0

Masz na myśli subversion * to * wielkość liter ma znaczenie. – JeremyP

+0

@JeremyP: Nie, Subversion ma wielkość liter niewrażliwą, jeśli chodzi o nazwy plików i nazwy katalogów. Podobnie jak w Windowsie, nie obchodzi go, czy istnieje 20 plików o tej samej nazwie, o ile żaden z nich nie ma tego samego przypadku. – jgifford25

+2

Nie. To jest złe. W subwersji, 'foo.c' i' Foo.c' odnoszą się do dwóch różnych obiektów. Jest to znane jako ** wielkość liter **. tj. znaczenie ma ** wrażliwy ** w przypadku. W systemie plików Windows NTFS 'foo.c' i' Foo.c' odnoszą się do tego samego obiektu. Nazywa się to ** bez rozróżniania wielkości liter **. – JeremyP

3

Subversion 1.7 wydaje się teraz obsługiwać case only renames w systemie Windows.

+0

1.7 jest już na zewnątrz? Łał. Mam nadzieję, że netbeans może przynajmniej zaktualizować się do wersji 1.6 – Michael

1

Innym sposobem jest po prostu skopiowanie (prawy przycisk Kopiuj na projekcie) projektu do nowej nazwy. Spowoduje to usunięcie wszystkich śladów katalogu .svn i możesz go ponownie zatwierdzić. Jednak stracisz także link do wszystkich edycji, które zostały wcześniej wykonane i zatwierdzone w SVN.

1

Kwestia jest nie Subversion, to system Windows (i nie, Mac mają ten sam problem, więc nie zacząć czuć się lepszy na tym jednym -. Fanboy)

W Windows przypadki są zachowane, ale nieistotne w nazwie pliku. W systemie Windows są to wszystkie te same pliki:

  • myfile.txt
  • myfile.txt
  • myfile.txt
  • myfile.txt

Niestety, Unix (z wyjątkiem Mac) jest zarówno przypadek zachowania i znaczące. W systemie Unix wszystkie te pliki są różnymi plikami.

Hilarność powstaje, gdy przechowujesz swoje repozytorium Subversion na hoście Linux/Unix, ale używasz klienta Windows/Mac. Repozytorium Universion Subversion śledzi każdą odmianę wielkich liter jako inny plik, ale klient subversion na twoim komputerze uważa, że ​​są one takie same. Istnieją dwa rozwiązania:

  • Za pomocą komputera z systemem Linux zrobić kasę, rozwiązać problem i sprawdzić go w
  • używać składni svn delete http://.... URL usunąć jeden z miscreant egzemplarzy, więc jest tylko jeden. plik o tej nazwie.