Скройте строку в файле перед фиксацией мерзавца

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

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

В настоящее время я работаю с репозиторием мерзавца, но было бы хорошо знать, как сделать это с svn.

Спасибо, Simão

5
задан simao 19 February 2010 в 00:51
поделиться

2 ответа

При использовании оператора = = выполняется сравнение значений указателей. Это будет работать только в том случае, если сравниваемые объекты являются точно такими же объектами по одному и тому же адресу памяти. Например, этот код возвращает Эти объекты отличаются , поскольку, несмотря на то, что строки одинаковы, они хранятся в разных местах памяти:

NSString* foo = @"Foo";
NSString* bar = [NSString stringWithFormat:@"%@",foo];
if(foo == bar)
    NSLog(@"These objects are the same");
else
    NSLog(@"These objects are different");

При сравнении строк обычно требуется сравнить текстовое содержимое строк, а не их указатели, поэтому следует использовать метод -isEqualToString: NSString Этот код возвращает Эти строки совпадают , поскольку сравнивает значение строковых объектов, а не их значения указателей:

NSString* foo = @"Foo";
NSString* bar = [NSString stringWithFormat:@"%@",foo];
if([foo isEqualToString:bar])
    NSLog(@"These strings are the same");
else
    NSLog(@"These string are different");

Для сравнения произвольных объектов Objective-C следует использовать более общий метод isEqual: NSObject . -isEqualToString: является оптимизированной версией -isEqual: , которую следует использовать, когда известно, что оба объекта являются объектами NSstring .

- (void)CheckKeyWithString:(NSString *)string
{
   //foreach key in NSMutableDictionary
   for(id key in dictobj)
     {
       //Check if key is equal to string
       if([key isEqual:string])
          {
           //do some operation
          }
     }
}
-121--1884522-

http://www.dotnetfunda.com/articles/article131.aspx

-121--4577857-

Если этот файл действительно должен находиться под контролем версии, используйте драйвер фильтра атрибутов git (см. также книга GitPro ).

Драйвер фильтра состоит из команды clean и команды smudge , каждая из которых может быть оставлена неопределенной.
При извлечении , когда задана команда smudge , на объект BLOB подается стандартный ввод, а его стандартный вывод используется для обновления файла рабочего дерева.
Аналогично, команда clean используется для преобразования содержимого файла рабочего дерева при возврате.

Таким образом, сценарий ( частная версия, только в репо, не управляемая Git ), на который ссылается smudge, может заменить кодированный URL, в то время как чистый скрипт восстановит свое содержимое на кодированный URL.
Публичная версия одного и того же сценария, управляемая git и проталкиваемая везде... ничего и не скрывайте URL.

alt text

4
ответ дан 13 December 2019 в 19:26
поделиться

Вы можете хранить эту строку в отдельном файле (например, в файле ресурсов, если ваша среда поддерживает это) и не ставить этот файл под контроль версий.

7
ответ дан 13 December 2019 в 19:26
поделиться