.repo files are used by some package managers (yum, ZYpp) to allow one click adding of repositories. The format originated as part of yum's /etc/yum.conf file format (which is documented in the [repository] options section of man yum.conf).
The standard consist in a INI-like file with the following keys:
[ruby] name=Ruby is an Interpreted Object-Oriented Scripting Language (openSUSE_10.2) type=rpm-md baseurl=http://software.opensuse.org/download/ruby/openSUSE_10.2/ path=/ gpgcheck=1 gpgkey=http://software.opensuse.org/openSUSE-Build-Service.asc enabled=1 priority=100
- The section between [...] is meant to be the unique id of the repository locally, also known as alias. Here it is ruby.
- name is a more descriptive text used in the UI.
- type can be rpm-md, YaST, ...
- baseurl is the base repository URL.
- path is relative to the baseurl, it's / by default.
- gpgcheck defines whether the source signatures should be checked using GPG.
- gpgkey defines URL for a GPG key.
- enabled is 1 by default, 0 if source is disabled (known, not used, but still listed).
- priority defines a source priority (99 by default). The highest priority is 1, the lowest is 200 (in YaST), resp. /unlimited/ (integer) in zypper (and others).
- keeppackages - if set to '1', the packages downloaded from repository will be kept in a cache on the local disk. If the value is set to '0', the packages will be removed after the commit transaction finishes. (supported since libzypp-4.2.7)
- Instead of yum's mirrorlist plaintext file, the next release of libzypp will use Metalinks for failover handling of URLs. (details ...)
Libzypp stores the .repo files in the directory /etc/zypp/repos.d/.