git pull error: “error: insufficient permission for adding an object to repository database .git/objects”

Today, when I was pulling changes from a remote repository, the error busted out:

error: insufficient permission for adding an object to repository database .git/objects

The error message indicates the problem itself, current user does not have insufficient permission to add objects to .git/objects folder.

If you’re familiar with Linux ownership and permission, it’s so easy for you. In case of not, read the following topic, it’s really interesting though: Linux Ownership and Permissions

So, we need to grant permission to the folder. We have 2 approaches:

1. Change owner of the folder and its sub-folders to current user

$chown [current-user-name]:[group-name] .git/objects -R

In my case:

$chown ducfilan:root .git/objects -R

Note: current username can be gotten from:

$echo $USER

2. Chmod the folder and its sub-folders to grant write permission to the current user

If you execute the below command, you will see your permission to the objects folder:

$ll .git | grep objects
$ll .git/objects

If you faced with the mentioned problem, you will see that you don’t have permission to that folder. Depends on your decision, you can grant which permissions to the folder you want. Maybe:

$chmod 766 .git/objects -R

Now you are ready to pull it down.

P/s: Personally, I recommend the first approach, it’s a natural and secure way.

Advertisements

Lập trình song song trong .NET (Parallelism) – part 1

Story

Ngày nay, các dòng máy tính không phân cao thấp dựa trên số chấm của xung nhịp vi xử lý (như những năm 2000 trở về trước) mà tính toán nhiều hơn đến thiết kế tổng thể, độ tiêu thụ năng lượng… Ngoài các dòng máy tính chuyên dụng (chú trọng vào hiệu năng tính toán), đa số các dòng máy tính tập trung hắm đến đối tượng người dùng chiếm số đông là sinh viên, học sinh, nhân viên văn phòng, người dùng gia đình bình thường, doanh nhân…, mà những tác vụ thường xuyên nhất lai khá nhẹ nhàng và không đòi hỏi hiệu năng tính toán tập trung. Do đó, các nhà sản xuất máy tính không tâp trung transitor vào để tăng tốc độ của vi xử lý để thực hiện những tác vụ đòi hỏi sức mạnh mà chia thành nhiều đơn vị nhỏ hơn, tập trung vào việc tăng số đơn vị xử lý độc lập (core) để phân tán luồng xử lý.

Vậy, để tận dụng thế mạnh của những hệ thống mới, khái niệm lập trình song song (parallelism) ra đời, đòi hỏi các developer phải hiểu và sử dụng được. Tuy nhiên, khái niệm này lại không thực sự được ứng dụng rộng rãi. Khi được hỏi: “Bạn có biết đến khái niệm lập trình song song hay đa luồng xử lý không?”, ai cũng trả lời “Có”, nhưng khi hỏi: “Thế bạn có hiểu và nắm được cách triển khai lập trình song song không?” thì rất ít người tự tin.

Trong loạt bài này, mình sẽ tập trung xử lý vấn đề lập trình song song và mượn .NET (với bộ thư viện TPL từ .NET 4.0) để minh họa.

Data structures in javascript – part 1: Stack and queue

maxresdefault

StackQueue có lẽ là 2 trong những dạng cấu trúc dữ liệu phổ biến nhất được sử dụng hàng ngày. Chúng ta nghĩ đến stack ở việc Back trong trình duyệt, khi Undo trong trình soạn thảo văn bản; nghĩ đến Queue trong trình tự thực hiện của việc đăng kí nhiều event cho 1 element.