Препятствуйте тому, чтобы люди продвинули фиксацию мерзавца с другим именем автора?

    .row {
        display: flex;
        flex-direction: column;
    }   
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/css/bootstrap.min.css">

</head>

<body>
<div class="row "  >
    <div class="col-md-7">
        <p class="paragrafos">
            Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Consequat mauris nunc congue nisi vitae suscipit. Egestas dui id ornare arcu odio ut sem nulla. Vulputate enim nulla aliquet.
        </p>
    </div>
    <div class="col-md-5"> <img id="img_1" src="app/1.jpg"></div>
    <div class="col-md-5"> <img id="img_2" src="app/2.jpeg"></div>
</div>

</body>
</html>

25
задан Readonly 22 September 2008 в 19:35
поделиться

5 ответов

Мы используем следующее для предотвращения случайных фиксаций неизвестного автора (например, при выполнении быстрой фиксации с сервера клиента или чего-то). Это должно быть помещено в .git/hooks/pre-receive и сделано исполняемым файлом.

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import subprocess
from itertools import islice, izip
import sys

old, new, branch = sys.stdin.read().split()

authors = {
    "John Doe": "john.doe@example.com"
}

proc = subprocess.Popen(["git", "rev-list", "--pretty=format:%an%n%ae%n", "%s..%s" % (old, new)], stdout=subprocess.PIPE)
data = [line.strip() for line in proc.stdout.readlines() if line.strip()]

def print_error(commit, author, email, message):
    print "*" * 80
    print "ERROR: Unknown Author!"
    print "-" * 80
    proc = subprocess.Popen(["git", "rev-list", "--max-count=1", "--pretty=short", commit], stdout=subprocess.PIPE)
    print proc.stdout.read().strip()
    print "*" * 80
    raise SystemExit(1)

for commit, author, email in izip(islice(data, 0, None, 3), islice(data, 1, None, 3), islice(data, 2, None, 3)):
    _, commit_hash = commit.split()
    if not author in authors:
        print_error(commit_hash, author, email, "Unknown Author")
    elif authors[author] != email:
        print_error(commit_hash, author, email, "Unknown Email")
10
ответ дан 28 November 2019 в 21:52
поделиться

Используйте ПРЕДПОЛУЧИТЬ рычаг (см. githooks (5) для деталей). Там Вы получаете старый sha и новый sha для каждого касательно обновленного. И может легко перечислить изменения и проверить, что у них есть надлежащий автор (список версии мерзавца - pretty=format: "% %ae%n" oldsha.. newsha).

Вот сценарий в качестве примера:

#!/bin/bash
#
# This pre-receive hooks checks that all new commit objects
# have authors and emails with matching entries in the files
# valid-emails.txt and valid-names.txt respectively.
#
# The valid-{emails,names}.txt files should contain one pattern per
# line, e.g:
#
# ^.*@0x63.nu$
# ^allowed@example.com$
#
# To just ensure names are just letters the following pattern
# could be used in valid-names.txt:
# ^[a-zA-Z ]*$
#


NOREV=0000000000000000000000000000000000000000

while read oldsha newsha refname ; do
    # deleting is always safe
    if [[ $newsha == $NOREV ]]; then
    continue
    fi

    # make log argument be "..$newsha" when creating new branch
    if [[ $oldsha == $NOREV ]]; then
    revs=$newsha
    else
    revs=$oldsha..$newsha
    fi
    echo $revs
    git log --pretty=format:"%h %ae %an%n" $revs | while read sha email name; do
    if [[ ! $sha ]]; then
        continue
    fi
        grep -q -f valid-emails.txt <<<"$email" || {
            echo "Email address '$email' in commit $sha not registred when updating $refname"
            exit 1
        }
        grep -q -f valid-names.txt <<<"$name" || {
            echo "Name '$name' in commit $sha not registred when updating $refname"
            exit 1
        }
    done
done
9
ответ дан 28 November 2019 в 21:52
поделиться

То, что Вы могли сделать, создают набор различных учетных записей пользователей, помещают их всех в ту же группу и дают тот доступ для записи группы к репозиторию. Тогда необходимо быть в состоянии записать простой входящий рычаг, который проверяет, совпадает ли пользователь, который выполняет сценарий, с пользователем в changeset.

я никогда не делал его, потому что я доверяю парням что контрольный код в мои репозитории, но если существует путь, это - вероятно, то, объясненное выше.

0
ответ дан 28 November 2019 в 21:52
поделиться

мерзавец не был первоначально разработан для работы как svn с большим центральным репозиторием. Возможно, можно ли вытянуть от людей по мере необходимости и отказаться ли вытягивать, если им установили их автора неточно?

0
ответ дан 28 November 2019 в 21:52
поделиться

Если Вы хотите управлять правами интернет-мерзавцу направления repo, я предлагаю, чтобы Вы посмотрели Gitosis вместо того, чтобы сделать на скорую руку Ваше собственное. Идентификационные данные обеспечиваются частными/с открытым ключом парами.

Read я жалкий это здесь , также.

0
ответ дан 28 November 2019 в 21:52
поделиться
Другие вопросы по тегам:

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