Git ignora il file per i progetti Xcode


Risposte:


693

In precedenza utilizzavo la risposta più votata, ma ha bisogno di un po 'di pulizia, quindi qui è stata rifatta per Xcode 4, con alcuni miglioramenti.

Ho cercato tutti i file in questo elenco, ma molti di essi non esistono nella documentazione Xcode ufficiale di Apple, quindi ho dovuto andare sulle mailing list di Apple.

Apple continua ad aggiungere file privi di documenti, corrompendo potenzialmente i nostri progetti live. Questo IMHO è inaccettabile e ora ho iniziato a registrare i bug contro di esso ogni volta che lo fanno. So che a loro non importa, ma forse vergognerà uno di loro nel trattare gli sviluppatori in modo più equo.


Se devi personalizzarlo, ecco un riassunto che puoi biforcare: https://gist.github.com/3786883


#########################
# .gitignore file for Xcode4 and Xcode5 Source projects
#
# Apple bugs, waiting for Apple to fix/respond:
#
#    15564624 - what does the xccheckout file in Xcode5 do? Where's the documentation?
#
# Version 2.6
# For latest version, see: http://stackoverflow.com/questions/49478/git-ignore-file-for-xcode-projects
#
# 2015 updates:
# - Fixed typo in "xccheckout" line - thanks to @lyck for pointing it out!
# - Fixed the .idea optional ignore. Thanks to @hashier for pointing this out
# - Finally added "xccheckout" to the ignore. Apple still refuses to answer support requests about this, but in practice it seems you should ignore it.
# - minor tweaks from Jona and Coeur (slightly more precise xc* filtering/names)
# 2014 updates:
# - appended non-standard items DISABLED by default (uncomment if you use those tools)
# - removed the edit that an SO.com moderator made without bothering to ask me
# - researched CocoaPods .lock more carefully, thanks to Gokhan Celiker
# 2013 updates:
# - fixed the broken "save personal Schemes"
# - added line-by-line explanations for EVERYTHING (some were missing)
#
# NB: if you are storing "built" products, this WILL NOT WORK,
# and you should use a different .gitignore (or none at all)
# This file is for SOURCE projects, where there are many extra
# files that we want to exclude
#
#########################

#####
# OS X temporary files that should never be committed
#
# c.f. http://www.westwind.com/reference/os-x/invisibles.html

.DS_Store

# c.f. http://www.westwind.com/reference/os-x/invisibles.html

.Trashes

# c.f. http://www.westwind.com/reference/os-x/invisibles.html

*.swp

#
# *.lock - this is used and abused by many editors for many different things.
#    For the main ones I use (e.g. Eclipse), it should be excluded
#    from source-control, but YMMV.
#   (lock files are usually local-only file-synchronization on the local FS that should NOT go in git)
# c.f. the "OPTIONAL" section at bottom though, for tool-specific variations!
#
# In particular, if you're using CocoaPods, you'll want to comment-out this line:
*.lock


#
# profile - REMOVED temporarily (on double-checking, I can't find it in OS X docs?)
#profile


####
# Xcode temporary files that should never be committed
# 
# NB: NIB/XIB files still exist even on Storyboard projects, so we want this...

*~.nib


####
# Xcode build files -
#
# NB: slash on the end, so we only remove the FOLDER, not any files that were badly named "DerivedData"

DerivedData/

# NB: slash on the end, so we only remove the FOLDER, not any files that were badly named "build"

build/


#####
# Xcode private settings (window sizes, bookmarks, breakpoints, custom executables, smart groups)
#
# This is complicated:
#
# SOMETIMES you need to put this file in version control.
# Apple designed it poorly - if you use "custom executables", they are
#  saved in this file.
# 99% of projects do NOT use those, so they do NOT want to version control this file.
#  ..but if you're in the 1%, comment out the line "*.pbxuser"

# .pbxuser: http://lists.apple.com/archives/xcode-users/2004/Jan/msg00193.html

*.pbxuser

# .mode1v3: http://lists.apple.com/archives/xcode-users/2007/Oct/msg00465.html

*.mode1v3

# .mode2v3: http://lists.apple.com/archives/xcode-users/2007/Oct/msg00465.html

*.mode2v3

# .perspectivev3: http://stackoverflow.com/questions/5223297/xcode-projects-what-is-a-perspectivev3-file

*.perspectivev3

#    NB: also, whitelist the default ones, some projects need to use these
!default.pbxuser
!default.mode1v3
!default.mode2v3
!default.perspectivev3


####
# Xcode 4 - semi-personal settings
#
# Apple Shared data that Apple put in the wrong folder
# c.f. http://stackoverflow.com/a/19260712/153422
#     FROM ANSWER: Apple says "don't ignore it"
#     FROM COMMENTS: Apple is wrong; Apple code is too buggy to trust; there are no known negative side-effects to ignoring Apple's unofficial advice and instead doing the thing that actively fixes bugs in Xcode
# Up to you, but ... current advice: ignore it.
*.xccheckout

#
#
# OPTION 1: ---------------------------------
#     throw away ALL personal settings (including custom schemes!
#     - unless they are "shared")
# As per build/ and DerivedData/, this ought to have a trailing slash
#
# NB: this is exclusive with OPTION 2 below
xcuserdata/

# OPTION 2: ---------------------------------
#     get rid of ALL personal settings, but KEEP SOME OF THEM
#     - NB: you must manually uncomment the bits you want to keep
#
# NB: this *requires* git v1.8.2 or above; you may need to upgrade to latest OS X,
#    or manually install git over the top of the OS X version
# NB: this is exclusive with OPTION 1 above
#
#xcuserdata/**/*

#     (requires option 2 above): Personal Schemes
#
#!xcuserdata/**/xcschemes/*

####
# Xcode 4 workspaces - more detailed
#
# Workspaces are important! They are a core feature of Xcode - don't exclude them :)
#
# Workspace layout is quite spammy. For reference:
#
# /(root)/
#   /(project-name).xcodeproj/
#     project.pbxproj
#     /project.xcworkspace/
#       contents.xcworkspacedata
#       /xcuserdata/
#         /(your name)/xcuserdatad/
#           UserInterfaceState.xcuserstate
#     /xcshareddata/
#       /xcschemes/
#         (shared scheme name).xcscheme
#     /xcuserdata/
#       /(your name)/xcuserdatad/
#         (private scheme).xcscheme
#         xcschememanagement.plist
#
#

####
# Xcode 4 - Deprecated classes
#
# Allegedly, if you manually "deprecate" your classes, they get moved here.
#
# We're using source-control, so this is a "feature" that we do not want!

*.moved-aside

####
# OPTIONAL: Some well-known tools that people use side-by-side with Xcode / iOS development
#
# NB: I'd rather not include these here, but gitignore's design is weak and doesn't allow
#     modular gitignore: you have to put EVERYTHING in one file.
#
# COCOAPODS:
#
# c.f. http://guides.cocoapods.org/using/using-cocoapods.html#what-is-a-podfilelock
# c.f. http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control
#
#!Podfile.lock
#
# RUBY:
#
# c.f. http://yehudakatz.com/2010/12/16/clarifying-the-roles-of-the-gemspec-and-gemfile/
#
#!Gemfile.lock
#
# IDEA:
#
# c.f. https://www.jetbrains.com/objc/help/managing-projects-under-version-control.html?search=workspace.xml
# 
#.idea/workspace.xml
#
# TEXTMATE:
#
# -- UNVERIFIED: c.f. http://stackoverflow.com/a/50283/153422
#
#tm_build_errors

####
# UNKNOWN: recommended by others, but I can't discover what these files are
#

61
Non dovresti ignorare *.locko Podfile.lock(non importa la ridondanza). Volete le stesse identiche versioni installate in tutte le aree di lavoro, non volete la "versione più recente".
tvon,

8
Ho rimosso la parte Podfile. Inizialmente non l'ho aggiunto, così dice che qualcun altro l'ha aggiunto e l'ho incautamente copiato / incollato nell'essenza. Mi scuso per qualsiasi / tutta confusione e incomprensioni. Non mi piace il modo in cui StackOverflow consente a chiunque di modificare le tue risposte :(.
Adam

5
Ora c'è una riga esplicativa per TUTTO, riga per riga. Ciò dovrebbe renderlo molto più chiaro e semplificare la personalizzazione per i tuoi progetti.
Adam,

3
@Adam Come posso vedere, questo file contiene metadati VCS e pertanto non dovrebbe essere verificato nel VCS. No, non ci sono menzioni in developer.apple.commerito xccheckout. Ma sulla pagina ufficiale di github, questo file era già incluso nel file gitignore. https://github.com/github/gitignore/blob/master/Objective-C.gitignore
skywinder

3
Senza una descrizione ufficiale, non ignoreremo nulla. Quasi ogni volta che la gente lo ha fatto, prima o poi ha danneggiato il progetto di qualcuno. Troppo pericoloso - non andarci. Quindi mi rifiuto di aggiungere qualcosa a questo file a meno che non abbia una fonte verificabile che confermi che è sicuro ignorarlo!
Adam,

276

Sulla base di questa guida per Mercurial, il mio .gitignore include:

.DS_Store
*.swp
*~.nib

build/

*.pbxuser
*.perspective
*.perspectivev3

Ho anche scelto di includere:

*.mode1v3
*.mode2v3

che, secondo questo post della mailing list di Apple , sono "impostazioni di progetto specifiche dell'utente".

E per Xcode 4:

xcuserdata

52
Non mi piacciono particolarmente i modelli .pbxuser / .perspective / *. Perspectivev3. Preferisco di gran lunga il seguente .xcodeproj / ! *. Xcodeproj / project.pbxproj Questo ignora tutto all'interno di un * .xcodeproj tranne il project.pbxproj.
Lily Ballard,

5
Non ignoro * .pbxuser, * .perspective e * .perspectivev3 perché mi piace mantenere quelle impostazioni quando clonerò il mio repository.
lajos,

7
Inoltre potresti aggiungere che puoi creare un file gitignore "globale" come questo: git config --global core.excludesfile ~ / .gitignore
Jess Bowers

63
Vorrei mettere in guardia tutti coloro che hanno aggiunto il file .gitignore dopo aver eseguito il commit del progetto: quei file che ignori vengono ancora monitorati. Dovrai rimuoverli manualmente da git usandogit rm --cached <files>
pixelfreak il

21
@SpacyRicochet: la formattazione del commento è apparentemente cambiata da quando ho scritto il commento. Da qui il corsivo. Il mio modello dovrebbe apparire come * .xcodeproj / *! *. Xcodeproj / project.pbxproj. Naturalmente, in questi giorni è necessario modificarlo per le aree di lavoro.
Lily Ballard,

64

Per quanto riguarda l'esclusione della directory "build" -

Se metti i tuoi file di build in una directory diversa dalla tua fonte, come faccio io, non hai la cartella nella struttura di cui preoccuparti.

Ciò semplifica anche la vita per la condivisione del codice, evitando backup gonfiati e anche quando si hanno dipendenze da altri progetti Xcode (mentre è necessario che le build siano nella stessa directory l'una dell'altra)

Puoi prendere una copia aggiornata dal Gistub https://gist.github.com/708713

Il mio file .gitignore attuale è

# 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

7
Ho la cartella di compilazione al di fuori della cartella del progetto, ma quando altri utenti creano il progetto, per impostazione predefinita viene ricreato nel progetto, quindi ho scoperto che aggiungerlo al file ignore è una soluzione migliore, altrimenti viene letto nella loro impegna.
lajos,

58

Per Xcode 4 aggiungo anche:

YourProjectName.xcodeproj/xcuserdata/*
YourProjectName.xcodeproj/project.xcworkspace/xcuserdata/*

78
Se aggiungi semplicemente xcuserdata, questo si occupa di entrambi.
ma11hew28,

7
Per qualche motivo, l'aggiunta di xcuserdata senza il prefisso non ha funzionato per me. Ho pensato che dovrebbe, però. Dispari.
BastiBen,

24

Ho incluso questi suggerimenti in un Gist che ho creato su Github: http://gist.github.com/137348

Sentiti libero di rovesciarlo e renderlo migliore.


5
Anche uno dei ragazzi di Github ha raccolto alcuni file .gitignore. Ecco la specifica Objective-C one github.com/github/gitignore/blob/master/Objective-C.gitignore
program247365

Anche la gente di Thoughtbot ha escogitato questo progetto - github.com/thoughtbot/liftoff che aggiungerà file .gitignore predefiniti, vedi il loro post sul blog: robots.thoughtbot.com/post/33796217972/…
program247365

14

Le persone di GitHub hanno file .gitignore esaustivi e documentati per i progetti Xcode:

Swift: https://github.com/github/gitignore/blob/master/Swift.gitignore

Objective-C: https://github.com/github/gitignore/blob/master/Objective-C.gitignore


5
Questo è già stato pubblicato in una delle risposte sopra. Ho trovato che era: errato, supportato in modo discutibile (oltre 100 richieste pull in sospeso!) E non documentato. Il fatto che sia "errato" è il peggiore di tutti; hanno fatto un'ignoranza che funziona solo per una serie ristretta di usi e non hanno spiegato cosa o perché! Quindi: la mia risposta sopra, che corregge i loro bug E spiega cosa viene fatto e perché, in modo da poter prendere decisioni ponderate progetto per progetto (su un nuovo progetto, a volte dimentico perché alcuni degli elementi sono lì - i commenti mi aiutano a decidere :))
Adam,

@Adam: GitHub's .gitignoreora è stato aggiornato per Xcode 6.3.2 e Swift, quindi ora è corretto. È anche documentato.
Eric,

sì, ma il problema con la pubblicazione di un file distruttivo di dati e il mantenimento in quel modo per mesi o anni - e apparentemente non preoccuparti di testarlo correttamente - è che sacrifichi permanentemente tutta la fede, la fiducia, il rispetto della comunità. Troppo tardi.
Adam,

14

Dovresti dare un'occhiata a gitignore.io per Objective-C e Swift.

Ecco il .gitignorefile che sto usando:

# Xcode
.DS_Store
*/build/*
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
profile
*.moved-aside
DerivedData
.idea/
*.hmap
*.xccheckout
*.xcworkspace
!default.xcworkspace

#CocoaPods
Pods

1
usa sempre il tuo esempio. belle impostazioni! Grazie!
Nikolay Shubenkov,

Non uso gitignore.io da un po '- vale la pena controllare se non lo hai fatto. Puoi usarlo per creare un gitignorefile per qualunque IDE / lingua ecc. Che stai usando. Aggiungerà anche una sezione di cocoapodi. Brilliant
Ashley Mills

12

Sto usando sia AppCode che XCode. Quindi .idea/dovrebbe essere ignorato.

aggiungilo a quello di Adam .gitignore

####
# AppCode
.idea/

10

Ecco uno script che ho creato per creare automaticamente i tuoi file .gitignore e .gitattributes usando Xcode ... L'ho hackerato insieme ad altre cose di altre persone. Divertiti!

Xcode-Git-User-Script

Nessuna garanzia ... Faccio schifo per quasi tutto questo, quindi usalo a tuo rischio e pericolo


10

Aggiunta di un file .gitignore per

Mac OS X + Xcode + Swift

Ecco come ho aggiunto un file .gitignore al mio progetto Swift:

  1. Seleziona il tuo progetto in Xcode e fai clic con il tasto destro → Nuovo gruppochiamalo " Git "
  2. Selezionare la cartella Git e fare clic con il tasto destro → Aggiungi nuovo file
  3. Nella scheda iOS → selezionare Altrofile vuoto

Inserisci qui la descrizione dell'immagine

  1. Dai qui il nome del file " .gitignore "

Inserisci qui la descrizione dell'immagine

  1. Conferma il nome e il tipo di file

Inserisci qui la descrizione dell'immagine

Ecco la struttura dei risultati:

Inserisci qui la descrizione dell'immagine

  1. Apri il file e oltre il codice qui sotto

# file

#########################################################################
#                                                                       #
#       Title         - .gitignore file                                 #
#       For           - Mac OS X, Xcode 7 and Swift Source projects     #
#       Updated by    - Ramdhan Choudhary                               #
#       Updated on    - 13 - November - 2015                            #
#                                                                       #
#########################################################################

########### Xcode ###########
# Xcode temporary files that should never be committed

## Build generated
build/
DerivedData

# NB: NIB/XIB files still exist even on Storyboard projects, so we want this
*~.nib
*.swp

## Various settings
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata

## Other
*.xccheckout
*.moved-aside
*.xcuserstate
*.xcscmblueprint
*.xcscheme

########### Mac OS X ###########
# Mac OS X temporary files that should never be committed

.DS_Store
.AppleDouble
.LSOverride

# Icon must end with two \r
Icon


# Thumbnails
._*

# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns

# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk

########## Objective-C/Swift specific ##########
*.hmap
*.ipa

# CocoaPods
#
# We recommend against adding the Pods directory to your .gitignore. However
# you should judge for yourself, the pros and cons are mentioned at:
# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
#
# Pods/

# Carthage
#
# Add this line if you want to avoid checking in source code from Carthage dependencies.
# Carthage/Checkouts

Carthage/Build

# fastlane
#
# It is recommended to not store the screenshots in the Git repository. Instead, use fastlane to re-generate the

fastlane/report.xml
fastlane/screenshots

Bene, grazie ad Adam . La sua risposta mi ha aiutato molto, ma ho dovuto aggiungere ancora alcune voci perché volevo un file .gitignore per:

Mac OS X + Xcode + Swift

Riferimenti: questo e questo


1
Risposta molto utile L'ho aggiunto come collegamento nel mio Setup Github nella risposta Xcode .
Suragch,

9

Il mio è un .bzrignore, ma è la stessa idea :)

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

Tm_build_errors è per quando uso TextMate per costruire il mio progetto. Non è completo come Hagelin, ma ho pensato che valesse la pena pubblicarlo per la linea tm_build_errors.



4

Ho aggiunto:

xcuserstate
xcsettings

e ho posizionato il mio file .gitignore alla radice del mio progetto.

Dopo aver commesso e spinto. Ho quindi eseguito:

git rm --cached UserInterfaceState.xcuserstate WorkspaceSettings.xcsettings

sepolto con la cartella qui sotto:

<my_project_name>/<my_project_name>.xcodeproj/project.xcworkspace/xcuserdata/<my_user_name>.xcuserdatad/

Ho quindi eseguito git commit e spinto di nuovo


L'hai aggiunto anche tu? O è solo tutto ciò che fai?
Hakre,

1
Sì, ho aggiunto entrambi ma xcusersate era il principale file offensivo. L'aggiunta era l'unico modo per inviare il mio codice da remoto. Altrimenti ero bloccato in un ciclo di feedback che richiedeva il commit prima del push. Quindi esegui il commit, quindi Xcode 4.5 ti chiederà di eseguire nuovamente il commit e non sarai mai in grado di eseguire il push perché il pre req sta eseguendo il commit.
user1524957,

4

Uso il seguente file .gitignore generato in gitignore.io:

### Xcode ###
build/
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
*.xccheckout
*.moved-aside
DerivedData
*.xcuserstate


### Objective-C ###
# Xcode
#
build/
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
*.xccheckout
*.moved-aside
DerivedData
*.hmap
*.ipa
*.xcuserstate

# CocoaPods
#
# We recommend against adding the Pods directory to your .gitignore. However
# you should judge for yourself, the pros and cons are mentioned at:
# http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control
#
Pods/


2

Ecco quello .gitignoreche GitHub utilizza per impostazione predefinita per i nuovi repository Xcode:

https://github.com/github/gitignore/blob/master/Objective-C.gitignore

È probabile che sia ragionevolmente corretto in qualsiasi momento.


Il file gitub .gitignore è una raccolta di tutti i file con cui abbiamo avuto problemi in passato. In questo momento, se avvii un progetto Xcode da zero e permetti a Xcode di preconfigurare il repository git, non c'è molto da ignorare in .gitignore: l'unica cosa che preferisco ignorare è xcuserdata / ... questo aiuta a non ingombrare i tuoi impegni .
codice incrociato

GitHub è il primo posto in cui cerco gitignores :)
Ben Leggiero,

1

La maggior parte delle risposte proviene dall'era Xcode 4-5. Consiglio un file ignore in stile moderno.

# Xcode Project
**/*.xcodeproj/xcuserdata/
**/*.xcworkspace/xcuserdata/
**/*.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
**/*.xcworkspace/xcshareddata/*.xccheckout
**/*.xcworkspace/xcshareddata/*.xcscmblueprint
.idea/

# Xcode Injection
IOSInjectionProject/
OSXInjectionProject/

# Build
build/
DerivedData

# CocoaPods
Pods/

# fastlane
fastlane/report.xml
fastlane/Preview.html
fastlane/screenshots
fastlane/test_output
fastlane/sign&cert

# CSV
*.orig
.svn

# Other
*~
.DS_Store
*.swp
*.save
._*
*.bak

Tienilo aggiornato da: https://github.com/BB9z/iOS-Project-Template/blob/master/.gitignore


0

Abbiamo scoperto che anche se aggiungi .gitignore e .gitattribte il file * .pbxproj può essere danneggiato. Quindi abbiamo un piano semplice.

Ogni persona che codifica in ufficio ignora semplicemente le modifiche apportate a questo file. Nel commit citiamo semplicemente i file che vengono aggiunti al sorgente. E quindi spingere sul server. Il nostro gestore dell'integrazione estrae e vede i dettagli del commit e aggiunge i file nelle risorse.

Una volta aggiornato il telecomando, tutti avranno sempre una copia funzionante. Nel caso in cui manchi qualcosa, lo informiamo di aggiungerlo e quindi tirare di nuovo.

Questo ha funzionato per noi senza problemi.


0

Consiglio di usare joe per generare un .gitignorefile.

Per un progetto iOS, eseguire il comando seguente:

$ joe g osx,xcode > .gitignore

Genererà questo .gitignore:

.DS_Store
.AppleDouble
.LSOverride

Icon
._*

.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns

.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk

build/
DerivedData

*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata

*.xccheckout
*.moved-aside
*.xcuserstate

-3

Una struttura di un file .gitignore standerd per il progetto Xcode>

.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
Icon?
ehthumbs.db
Thumbs.db
build/
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
!default.xcworkspace
xcuserdata
profile
*.moved-aside
DerivedData
.idea/

In che modo questo differisce dalle risposte precedenti? Non incollare gitignorequi il tuo file, questo non aggiunge nulla a questo argomento.
Ashley Mills,

@AshleyMills Si prega di leggere prima la risposta, quindi aggiungere un commento .... La risposta è per una struttura standard / richiesta .... che sono essenziali per avere ...
Rahul Singha Roy
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.