• Stars
    star
    148
  • Rank 249,983 (Top 5 %)
  • Language
    HTML
  • License
    Other
  • Created about 13 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Contains the collaborative work of the openSUSE marketing and artwork teams. Content is licensed under CC-BY-SA 3.0 (Creative Commons Attribution-ShareAlike 3.0 Unported License).

Artwork Repository

This is the repository of the openSUSE artwork team. While a version control system such as git may seem daunting, it is by far the best option for collaborative authoring. GitHub is also relatively easy to use.

You can also read this guide in:

License

All content in is licensed under CC-BY-SA 3.0 unless otherwise stated.

Contribute

Initial setup

If you would like to modify or add material to our repository, you need to do the following things first:

  1. register an account on GitHub, if you don't already have one
  2. install git (as root or use sudo, zypper install git), if you don't have it already
  3. See the GitHub help to set up your account and get an SSH key in there.
  4. ask [email protected] to add your user account to the team on github, which will give you write access to the repo.
  5. run the following commands in your ordinary user shell:
    1. git config --global user.email "my.email@address" (obviously with your real email address ;))
    2. git config --global user.name "John Doe" (again, with your real name)
  6. pick some directory where you'll want the files to reside, e.g. ~/Documents and go there in your shell, e.g. cd ~/Documents
  7. retrieve the repository with the following command as user: git clone [email protected]:openSUSE/artwork.git (which will create a subdirectory "artwork")

Workflow

Getting the latest changes

In order to pull the latest changes that have been stored in the repository, use the following command:

git pull

That will download the latest version of everything that is in the repository on github, and store it on your disk.

Of course, that command needs to be ran from a shell while being in your local artwork directory (e.g. ~/Documents/artwork)

Adding new files or directories

When you create a new file or directory, you have to tell git that you would like to add it to the repository first, using the following command:

git add filename

(where you replace filename with the actual name of the file or directory you want to add).

Note that adding a file does not upload it to the repository yet, it merely instructs git that you want to put it under version control.

Committing changes

When you change files and you would like to store their state in the repository (e.g. when you think it's good enough to be used by others), use the following command:

git commit -m "some comment about the change I just made" filename

Please use meaningful comments (what's after -m) as that will help everyone to keep track of the changes that were made. Also, make sure to put the comment into quotes (between "") or the shell will interpret it as several parameters for the git command, which it isn't.

You can also commit changes of several files at once, which is the preferred approach when the changes do apply to several files (e.g. you just changed the color palette on a dozen Inkscape files): that way, your changes will show up as one "action" in the history of the repository.

To do so, just pass several filenames to the git commit command, like this:

git commit -m "changed palette to the right colors" filename1 filename2
filename3

You can also commit all the changes to all the files in your local copy of the repository, by using the -a switch, like this:

git commit -m "changed palette to Bento colors" -a

Pushing changes

When you commit changes, git will only store them in your local repository on your hard disk, and not to the artwork repository on github, which means that no one else will be able to see your changes.

git works that way because you may choose to make changes locally, on your hard disk, and keep track of those changes to be able to revert to a previous version, without necessarily pushing those changes to all the other people who work on the repository just yet.

Once you want to share your changes with everyone else, you must "push" those changes to the repository, with the following command:

git push

Note that the very first time you will do a git push, you will have to use this command: git push origin master

From then on, you will only need to use git push

Furthermore, when you want to push your changes to github, it is possible that someone else already pushed other changes there. git will tell you see when that happened, and you will just need to make a git pull before the git push

Note Dolphin, KDE's file manager, has git support. The actions described above can be done quite easily from there. Configure Dolphin and under Services you can enable Git support. It will then automatically detect git folders and let you add files you changed, make commits and push and pull changes.

Status

With the command git status, you can see whether you have files on your hard disk that have changes (or new files, or deleted files) that have not been committed yet.

git status

would output something like this:

# On branch master
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   git-mini-howto.txt
#
no changes added to commit (use "git add" and/or "git commit -a")

The output above means that the file git-mini-howto.txt is locally modified: you have made changes to that file, but those changes are not committed (yet).

Removing files

If you want to delete a file from the repository, use git rm instead of removing it as you would normally do (using rm filename or your favourite file browser), like this:

git rm filename

Removing a file is just yet another change for git and, hence, to commit the change: git commit -m "removed that file, it's obsolete now" filename (or the other commit commands as explained above, such as git commit -a -m "...")

To push that change to github, for everyone:

git push

Renaming or moving files or directories

When you want to rename a file or directory, or move it elsewhere, do not use the regular command-line or file manager options to do so. If you do that, git will consider the renamed/moved file to be a new one and hence will lose the history of changes.

The proper way of doing so is by using git mv, like this:

git mv old_filename new_filename

As usual, you will need to commit and push for that change to be visible for everyone.

History

One of the most obvious advantages of version control systems such as git is the ability to see the history of a file, which is a log of the modifications that have been made, with the commit messages (see the -m option for git commit), when changes were made and by whom.

To see the history of a file, use the following command:

git log filename

That will display something like this:

commit bbcf4e3a848d65fc28d1fb6d20d0ce7add040a33
Author: Pascal Bleser <[email protected]>
Date:   Tue Feb 15 23:46:11 2011 +0100

    add LICENSE

There is only one change on the file above, but it shows

  • whom made the change: Pascal Bleser
  • when that change was made: Tue Feb 15
  • what was changed (the commit message): "add LICENSE"

You can also see the all the changes, of the whole repository (and not just of a single file), by using

git log

(without passing a file name)

Please note that git log commands automatically put the output into a pager (normally that is /usr/bin/less), which gives you the ability to navigate the output (with expected keys, such as arrow up, arrow down, page up, page down, ...). To leave the pager and return to the shell, simply press the key "q" (mnemonics: "q" as in "quit").

git log has quite a few more options, which you can read about by typing git log --help (also opens in the pager, press "q" to quit.)

TODO

  • document how to retrieve previous revisions of a file (git checkout)
  • document how to reset your working environment to the state of the repository, to remove all your local changes (git reset --hard)
  • mention graphical user interfaces (gitk, qgit, ...)
  • link to other howtos, cheat sheets, etc, such as http://cheat.errtheblog.com/s/git

More Repositories

1

open-build-service

Build and distribute Linux packages from sources in an automatic, consistent and reproducible way #obs
Ruby
852
star
2

osem

Open Source Event Manager. An event management tool tailored to Free and Open Source Software conferences.
Ruby
826
star
3

snapper

Manage filesystem snapshots and allow undo of system modifications
C++
736
star
4

libsolv

Library for solving packages and reading repositories
C
469
star
5

zypper

World's most powerful command line package manager
C++
354
star
6

opi

OBS Package Installer (CLI)
Python
235
star
7

hwinfo

Hardware information tool
C
220
star
8

kernel

Our patched kernel sources. This repository is generated from https://github.com/openSUSE/kernel-source
C
186
star
9

catatonit

A container init that is so simple it's effectively brain-dead.
C
179
star
10

imagewriter

Utility for writing raw disk images & hybrid isos to USB keys
C++
166
star
11

osc

The Command Line Interface to work with an Open Build Service
Python
151
star
12

kernel-source

A quilt-like series of patches plus scripts and .spec files to produce the kernel RPM package. If you are looking for a ready-to-use kernel tree, have a look at https://github.com/openSUSE/kernel
Python
146
star
13

agama

A service-based Linux installer
Ruby
133
star
14

obs-build

OBS build script, can be used with OBS or stand alone
Perl
123
star
15

software-o-o

The site behind https://software.opensuse.org. It is the default web interface to download openSUSE distributions and to search for OBS packages. Packaged at https://build.opensuse.org/project/show/openSUSE:infrastructure:software.opensuse.org
SCSS
121
star
16

libzypp

ZYpp Package Management library
C++
107
star
17

transactional-update

Atomic updates for Linux operating systems
C++
106
star
18

wicked

Framework for network configuration
C
101
star
19

openSUSEway

dotfiles for Sway on openSUSE
CSS
92
star
20

docker-containers

Source files required used to build the official openSUSE containers for Docker
Dockerfile
88
star
21

libeconf

Enhanced config file parser, which merges config files placed in several locations into one.
C
80
star
22

libpathrs

C-friendly API to make path resolution safer on Linux.
Rust
70
star
23

SUSEPrime

Provide nvidia-prime like package for openSUSE
Shell
65
star
24

py2pack

Generate distribution packages from PyPI
Python
64
star
25

openSUSE-release-tools

Tools to aid in staging and release work for openSUSE/SUSE
Python
60
star
26

mentoring

The openSUSE Developer Mentoring Program
JavaScript
60
star
27

daps

DocBook Authoring and Publishing Suite (DAPS)
Shell
60
star
28

microos-toolbox

Script to run a toolbox container on openSUSE MicroOS
Shell
54
star
29

Customize-IBus

Full customization of appearance, behavior, system tray and input source indicator for IBus. (深度定制 IBus 的外观、行为、系统托盘以及输入指示)
JavaScript
54
star
30

landing-page

openSUSE landing page which features Tumbleweed and Leap
HTML
50
star
31

openSUSE-docs-revamped-temp

We're creating new, refreshed community user guides and documentation for the openSUSE distributions, centered on Tumbleweed, catering for inexperienced users and veterans alike. Target release: 2021
HTML
47
star
32

yomi

Yet one more installer
Python
41
star
33

trollolo

Trello command line client
Ruby
40
star
34

MirrorCache

Download Redirector
Perl
36
star
35

get-o-o

Website that provides detailed information about openSUSE distributions
HTML
34
star
36

docker-containers-build

openSUSE container builds used by Docker's stackbrew system
33
star
37

cheetah

Simple library for executing external commands safely and conveniently
Ruby
32
star
38

obs-docu

Official Open Build Service Documentation. Content gets reviewed and edited. Generated books are available at http://www.openbuildservice.org
32
star
39

obs-service-tar_scm

An OBS source service: fetches code from any SCM and archives it
Python
31
star
40

cepces

cepces is an application for enrolling certificates through CEP and CES.
Python
30
star
41

branding

openSUSE branding for the distribution - both branding-openSUSE and branding-baseonopensuse
29
star
42

supportutils

SUSE Linux Enterprise support utilities. Gathers system information.
Shell
28
star
43

scanny

Scanny — Ruby on Rails security scanner
Ruby
27
star
44

libstorage-ng

Next generation libstorage
C++
25
star
45

cavil

The legal review app used by SUSE Lawyers
Perl
25
star
46

sdbootutil

Shell
25
star
47

health-checker

Systemd service to check, if the system does come up correct after an update
Shell
25
star
48

vagrant

openSUSE for Vagrant
Shell
25
star
49

helm-mirror

Helm plugin used to mirror repositories
Go
24
star
50

salt-toaster

Salt Toaster: An ultimate test suite for Salt
Python
24
star
51

multipath-tools-pre2021

Old (pre-2021) SUSE/SLES fork of Linux multipath tools. See github.com/openSUSE/multipath-tools for current code.
C
24
star
52

fuel-ignition

Easily generate new or edit existing Ignition configs. No more fiddling around with JSON or Butane.
Vue
24
star
53

ca-certificates

Utilities for system wide CA certificate installation
Python
23
star
54

wiki

openSUSE Wiki
PHP
23
star
55

salt

openSUSE and SUSE patches and backports for SaltStack
Python
22
star
56

kdump

kernel dump helpers
Shell
21
star
57

python-rpm-macros

Multi-Python, Single-Spec macros generator
Lua
21
star
58

news-o-o

📰 News from the openSUSE Land
HTML
21
star
59

rapidquilt

Rust
20
star
60

mksusecd

Script to create a SUSE installation ISO image.
Perl
19
star
61

IBus-Theme-Hub

This is the hub for IBus theme that can be used by Customize IBus GNOME Shell Extension.(可被自定义IBus GNOME Shell 扩展使用的IBus主题集合)
CSS
19
star
62

osc2

The next Command Line Interface to work with an openSUSE Build Service
Python
17
star
63

vagrant-ceph

Builds a cluster of servers using libvirt. Supports multiple configurations.
Ruby
17
star
64

kmozillahelper

KDE mozilla integration
C++
17
star
65

gfxboot

Graphical boot screen for GRUB, LILO, and SYSLINUX
HTML
17
star
66

travel-support-program

A rails app to support the travel support program of openSUSE (TSP)
Ruby
17
star
67

linuxrc

Installation Setup
C
16
star
68

installation-images

openSUSE Installation Images
Perl
16
star
69

obs-landing

The Open Build Service project landing page
HTML
16
star
70

old-landing-page

Former opensuse.org landing page
JavaScript
15
star
71

combustion

Configure MicroOS on the first boot
Shell
15
star
72

gitarro

run all your test against a GitHub Pull request
Ruby
15
star
73

IBus-Theme-Tools

Generate the IBus GTK or GNOME Shell theme from existing themes. (从现有主题中生成 IBus GTK 或 GNOME Shell 主题)
Python
15
star
74

nailed

Collect and visualize product related data from Bugzilla and Github
Ruby
14
star
75

jeos-firstboot

Lightweight firstboot wizard systemd service for SLE and openSUSE JeOS Images
Shell
14
star
76

orthos2

Orthos is a machine administration tool.
Python
14
star
77

suse-vale-styleguide

Humble style guide for technical writers by a technical writer
14
star
78

containers-systemd

Systemd service files to run various openSUSE containers by systemd and podman
13
star
79

opensuse-themes

Themes used in openSUSE and OBS
Makefile
13
star
80

obsgit

Simple bridge between Open Build Server and git
Python
13
star
81

firefox-maintenance

Shell
13
star
82

chameleon

openSUSE Design System for Web
SCSS
13
star
83

openSUSE-repos

openSUSE-repos
Shell
12
star
84

gloves

System configuration library, started by YaST developers
Ruby
12
star
85

obs-sign

sign daemon and client for remote gpg signing.
C
12
star
86

portusctl

A client for your Portus instance
Go
12
star
87

obs-service-format_spec_file

An OBS source service: reformats a spec file to SUSE standard
Python
12
star
88

build-compare

Compare content of rpm package and find differences inside the files.
Shell
12
star
89

suse-xsl

DocBook XSL Stylesheets for SUSE branding
XSLT
11
star
90

defrag-api

Python
11
star
91

os-update

Update automatically package based OS and reboot if necessary
Shell
11
star
92

suseviclient

SUSE VI Client: Lightweight tool for ESXi management from Linux box
JavaScript
11
star
93

perl-bootloader

Perl modules for configuring various boot loaders
Perl
11
star
94

cockpit-wicked

Cockpit module to configure the network using Wicked.
JavaScript
11
star
95

Mojo-IOLoop-ReadWriteProcess

Execute external programs or internal code blocks as separate process
Perl
10
star
96

sat-solver

Library for solving packages and reading repositories (superseded by libsolv)
C
10
star
97

patterns

openSUSE patterns
Python
10
star
98

sysconfig

Shell
10
star
99

container-images

Official openSUSE Container Images Definitions
Shell
10
star
100

release-notes-openSUSE

Release Notes for openSUSE
Makefile
10
star