Git игнорировать файл для проектов Xcode

Самый гибкий способ, которым я мог придумать, - это использовать аннотацию Джексона JsonAnyGetter . Это позволяет вам предоставить Джексону Map представление о состоянии вашего pojo. фильтрация значений из Map может быть выполнена итеративным способом. фильтрация значений из Map, содержащего Map с, может быть выполнена рекурсивным способом.

Вот решение, которое я построил на основе предложенного вопроса

public class Claim {
    Map properties = new HashMap<>();

    public Claim() {
        // may be populated from instance variables
        Map person = new HashMap<>();
        person.put("name", "Sam");
        person.put("surname", "ngonma");
        properties.put("person", person);
        Map car = new HashMap<>();
        car.put("make", "Toyota");
        car.put("model", "yaris");
        properties.put("car", car);
    }

    // nullify map values based on provided array
    public void filterProperties (String[] nullifyValues) {
        filterProperties(properties, nullifyValues);
    }

    // nullify map values of provided map based on provided array
    @SuppressWarnings("unchecked")
    private void filterProperties (Map properties, String[] nullifyValues) {
        // iterate all String-typed values
        // if value found in array arg, nullify it
        // (we iterate on keys so that we can put a new value)
        properties.keySet().stream()
            .filter(key -> properties.get(key) instanceof String)
            .filter(key -> Arrays.asList(nullifyValues).contains(properties.get(key)))
            .forEach(key -> properties.put(key, null));
        // iterate all Map-typed values
        // call this method on value
        properties.values().stream()
            .filter(value -> value instanceof Map)
            .forEach(value -> filterProperties((Map)value, nullifyValues));
    }

    // provide jackson with Map of all properties
    @JsonAnyGetter
    public Map getProperties() {
        return properties;
    }
}

, метод испытания

,

public static void main(String[] args) {
    try {
        ObjectMapper mapper = new ObjectMapper();
        Claim claim = new Claim();
        claim.filterProperties(new String[]{"Sam", "Toyota"});
        System.out.println(mapper.writeValueAsString(claim));
    } catch (Exception e) {
        e.printStackTrace();
    }
}

,

, вывод

,

, {"car":{"model":"yaris","make":null},"person":{"surname":"ngonma","name":null}},

.

864
задан 05.06.2014, 00:26

3 ответа

На основе это руководство для Подвижного мой .gitignore включает:

.DS_Store
*.swp
*~.nib

build/

*.pbxuser
*.perspective
*.perspectivev3

я также принял решение включать:

*.mode1v3
*.mode2v3

, который, согласно это сообщение списка рассылки Apple , "определенные для пользователя настройки проекта".

И для Xcode 4:

xcuserdata
276
ответ дан 04.10.2019, 11:19
  • 1
    Я don' t особенно как .pbxuser / .perspective / *.perspectivev3 шаблоны. Я очень предпочитаю следующий .xcodeproj / ! *.xcodeproj/project.pbxproj, Который игнорирует все в *.xcodeproj кроме project.pbxproj. – Lily Ballard 16.03.2009, 08:33
  • 2
    Я не игнорирую *.pbxuser, *.perspective и *.perspectivev3, потому что мне нравится удерживать на месте те настройки, когда я клонирую свой репозиторий. – lajos 27.05.2009, 19:57
  • 3
    Также Вы могли бы хотеть добавить, что можно сделать " global" файл gitignore как это: конфигурация мерзавца - глобальный core.excludesfile ~/.gitignore – Jess Bowers 28.04.2010, 04:56
  • 4
    I' d нравится предостерегать всех, кто добавил .gitignore файл после , они фиксировали проект: те файлы, которые Вы игнорируете, все еще прослеживаются. You' ll должны удалить их от мерзавца, вручную использующего git rm --cached <files> – pixelfreak 27.06.2011, 15:44
  • 5
    @SpacyRicochet: форматирование Комментария, по-видимому, изменилось, так как я записал комментарий. Следовательно курсив. Мой шаблон, как предполагается, похож на *.xcodeproj /*! *.xcodeproj/project.pbxproj. Конечно, в эти дни действительно необходимо скорректировать его для рабочих областей. – Lily Ballard 11.05.2012, 09:14
  • 6
    Я использовал бы этого, если бы только это должно было работать с бэкендом PDF:) По некоторым причинам, я никогда не мог помещать оси правильно на холсте, в то время как я работаю с бэкендом PS. – Gökhan Sever 23.12.2019, 01:12

Относительно исключения каталога 'сборки' -

при размещении файлов типа "build" в различный каталог из источника как я делаю, у Вас нет папки в дереве для волнения о.

Это также делает жизнь более простой для совместного использования Вашего кода, предотвращая чрезмерно увеличенные в размере резервные копии, и даже когда у Вас есть зависимости к другим проектам XCode (в то время как требуют, чтобы сборки были в том же каталоге друг как друг)

, можно захватить актуальную копию с сути GitHub https://gist.github.com/708713

, который Мой текущий .gitignore файл

# Mac OS X
*.DS_Store

# Xcode
*.pbxuser
*.mode1v3
*.mode2v3
*.perspectivev3
*.xcuserstate
project.xcworkspace/
xcuserdata/

# Generated files
*.o
*.pyc


#Python modules
MANIFEST
dist/
build/

# Backup files
*~.nib
62
ответ дан 04.10.2019, 11:19
  • 1
    У меня действительно есть папка сборки за пределами папки проекта, но когда другие пользователи разрабатывают проект, это по умолчанию воссоздается в проекте - таким образом, я нашел, что, добавляя это к проигнорировать файлу - лучшее решение, иначе это повторно добавляется в их фиксациях. – lajos 27.05.2009, 19:53

Мой - .bzrignore, но та же идея:)

.DS_Store
*.mode1v3
*.pbxuser
*.perspectivev3
*.tm_build_errors

tm_build_errors для того, когда я использую TextMate для разрабатывания моего проекта. Не совсем столь же всесторонний как Hagelin, но я думал, что это стоило отправить для tm_build_errors строки.

9
ответ дан 04.10.2019, 11:19

Теги

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